SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
JavaScript Patterns
Stoyan Stefanov, Yahoo!
@stoyanstefanov




Ajax Experience, Boston 2009
3:25 p.m. Sept 15, 2009
About me
•  Yahoo! Search
•  Yahoo! Exceptional
   Performance
•  YSlow 2.0 architect
•  http://smush.it
•  Books, articles
•  http://phpied.com
Types of patterns

•  OO Design Patterns
 (gang of four)
•  JavaScript-specific
   coding patterns
•  Anti-patterns
In this session…
•  Object creation patterns
•  Code reuse patterns
•  Functional patterns
•  More on object creation
•  Design patterns
Object creation patterns
#
Two ways to create objects
•  Object literal
•  Constructor functions



  {}      vs.   new
Object literal
var adam = {}; // clean 
slate 

adam.name = “Adam”; 
adam.say = function() { 
  return “I am ” + 
this.name; 
}; 
Object literal
var adam = { 
  name: “Adam”, 
  say: function() { 
    return “I am ” + this.name; 
  } 
}; 
Using a constructor


var adam = new Person(“Adam”); 
adam.say(); // “I am Adam” 
Constructor functions
var Person = function(name) { 

  this.name = name; 
  this.say = function() { 
    return “I am ” + this.name; 
  }; 

}; 
Constructor functions
var Person = function(name) { 
  // var this = {}; 
  this.name = name; 
  this.say = function() { 
    return “I am ” + this.name; 
  }; 
  // return this; 
}; 
Naming convention

MyConstructor 
myFunction 
Enforcing new 
function Person() {  
  var that = (this === window) ? {} : this; 


  that.name = name; 
  that.say = function() { 
    return “I am ” + that.name; 
  }; 

  return that;  
}  
Enforcing new 
this instanceof Person 

this instanceof arguments.callee 



                           ES5
                           FTW
Prototype
var Person = function(name) { 
  this.name = name; 
}; 
Person.prototype.say = function() { 
  return “I am ” + this.name; 
}; 
How is the prototype used?

>>> var adam = new Person('Adam'); 
>>> adam.name; 
"Adam" 
>>> adam.say(); 
"I am Adam" 
If you want to reuse it,
add it to the prototype
Code reuse patterns
Inheritance – friend or foe


“Prefer object composition
to class inheritance”
Gang of 4
Borrowing methods pattern

•  call() and apply() 

notmyobj.doStuff.call(myobj, param1, p2, p3) 
notmyobj.doStuff.apply(myobj, [param1, p2, p3])
                                               
Example: borrowing from Array
function f() { 
   var args = [].slice.call(arguments, 1, 3); 
   return args; 
} 

>>> f(1, 2, 3, 4, 5, 6) 
2,3 


[].slice.call  
can also be
Array.prototype.slice.call 
Inheritance by copying properties
function extend(parent, child) { 
  var i, child = child || {}; 
  for (i in parent) { 
    child[i] = parent[i]; 
  } 
  return child; 
} 
Mixins
function mixInThese() { 
  var arg, prop, child = {}; 
  for (arg = 0; arg < arguments.length; arg++) { 
    for (prop in arguments[arg]) { 
      child[prop] = arguments[arg][prop]; 
    } 
  } 
  return child; 
} 
var cake = mixInThese( 
 {eggs: 2, large: true},  
 {butter: 1, salted: true}, 
 {flour: “3 cups”}, 
 {sugar: “sure!”} 
); 
Classical inheritance
function Parent(){ 
  this.name = 'Adam'; 
} 
Parent.prototype.say = function(){ 
  return this.name; 
}; 

function Child(){} 

inherit(Child, Parent); 
Option 1

function inherit(C, P) { 
  C.prototype = new P(); 
} 

ECMA standard
Option 2 – rent-a-constructor
function C(a, c, b, d) { 
  P.call(this, arguments); 
} 
•  Advantage – passes arguments
when creating an object
•  Drawback – won’t inherit from the
prototype
Option 3 – rent + prototype
function C(a, c, b, d) { 
  P.call(this, arguments); 
} 
C.prototype = new P(); 
Option 4
function inherit(C, P) { 
  C.prototype = P.prototype; 
} 
•  Advantage: everybody shares the
same prototype
•  Drawback: everybody shares the
same prototype 
Option 5
function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
} 
•  Only inherits properties/
methods of the prototype
Option 5 + super

function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
  C.uber = P.prototype; 
} 
Option 5 + super + constructor
reset
function inherit(C, P) { 
  var F = function(){}; 
  F.prototype = P.prototype; 
  C.prototype = new F(); 
  C.uber = P.prototype; 
  C.prototype.constructor = C; 
} 
Prototypal inheritance

•  by Douglas Crockford
•  no class-like constructors
•  objects inherit from objects
•  via the prototype
Prototypal inheritance
function object(o) { 
  function F(){} 
  F.prototype = o; 
  return new F(); 
                     ES5
}                    FTW
Prototypal inheritance

>>> var parent = {a: 1}; 
>>> var child = object(parent); 
>>> child.a; 
1 
>>> child.hasOwnProperty(“a”); 
false 
Functions
Functions are objects
Self-executable functions

(function(){ 
   var a = 1; 
   var b = 2; 
   alert(a + b); 
})(); 
Self-executable functions

(function(a, b){ 
  var c = a + b; 
  alert(c); 
})(1, 2); 
Callbacks
function test(a, b, fn) { 
    fn(a, b); 
} 

test(1, 2, myFunc); 

test(1, 2, function(one, two){ 
    console.log(arguments); 
}); 
Callback pattern example

document.addEventListener( 
   'click',  
   animateAndWowUser,  
   false 
); 
Callback pattern example
var thePlotThickens = function(){ 
  console.log('500ms later...'); 
}; 
setTimeout(thePlotThickens, 500); 

// anti‐pattern 
setTimeout("thePlotThickens()", 
500); 
Returning functions
function setup() { 
    alert(1); 
    return function() { 
        alert(2); 
    }; 
} 
var my = setup(); // alerts 1
                             
my(); // alerts 2 
Returning functions
function setup() { 
    var count = 0; 
    return function() { 
        return ++count; 
    }; 
} 
var next = setup(); 
next(); // 1 
next(); // 2 
Self-overwriting functions
function next() { 
    var count = 1; 
    next = function() { 
        return ++count; 
    }; 
    return count; 
} 
next(); // 1 
next(); // 2 
Lazy function definition
function lazy() { 
    var result = 2 + 2; 
    lazy = function() { 
        return result; 
    }; 
    return lazy(); 
} 
lazy(); // 4 
lazy(); // 4 
Function properties
function myFunc(param){ 
    if (!myFunc.cache) { 
        myFunc.cache = {}; 
    } 
    if (!myFunc.cache[param]) { 
        var result = {}; // … 
        myFunc.cache[param] = result; 
    } 
    return myFunc.cache[param]; 
} 
Init-time branching
// BEFORE 
var addListener = function(el, type, fn) {  

  // w3c 
  if (typeof window.addEventListener === 'function') {  
    el.addEventListener(type, fn, false);  

  // IE 
  } else if (typeof document.attachEvent === 'function') { 
    el.attachEvent('on' + type, fn);  

  // older browsers 
  } else {   
    el['on' + type] = fn;  
  }  
};  
Init-time branching
var addListener;  

if (typeof window.addEventListener === 'function') {  
  addListener = function(el, type, fn) {  
    el.addEventListener(type, fn, false);  
  };  
} else if (typeof document.attachEvent === 'function') 
{ 
  addListener = function(el, type, fn) {  
    el.attachEvent('on' + type, fn); 
  };  
} else { 
  addListener = function(el, type, fn) {    
    el['on' + type] = fn; 
  };  
}  
More object creation patterns
Private/privileged
function MyConstr() { 
    var a = 1; 
    this.sayAh = function() { 
        return a; 
    }; 
} 

>>> new MyConstr().sayAh(); 
1 
Declaring dependencies
YAHOO.properties.foo = function() 
{ 
  var Event = YAHOO.util.Event, 
      Dom   = YAHOO.util.Dom; 

  // ... 

}(); 
Namespacing

var myApp = {}; 
myApp.someObj = {}; 
myApp.someObj.someFunc =  
              function()
{}; 
Namespacing

function namespace(){…} 

>>> namespace(‘my.name.space’)
                              
>>> typeof my.name.space 
“object” 
Chaining
var o = { 
  v: 1, 
  increment: function() { 
    this.v++; 
    return this; 
  }, 
  add: function(v) { 
    this.v += v; 
    return this; 
  }, 
  shout: function(){ 
    alert(this.v); 
  } 
}; 

>>> o.increment().add(3).shout() // 5 
Configuration objects
myPerson(last, first, dob, 
address) 

vs.

var conf = { 
    first: 'Bruce', 
    last: 'Wayne' 
}; 
myPerson(conf); 
Static members – public
function MyMath() { 
  // math here... 
} 

MyMath.PI = 3.14; 
MyMath.E  = 2.7; 
Module pattern
MYAPP.namespace('modules.foo'); 
MYAPP.modules.foo = function() { 
  var a = 1; 
  return { 
    getA: function(){ 
      return a; 
    } 
  }; 
}(); 
Design Patterns
Singleton

var mysingleton = {}; 

•  It’s as simple as that
Singleton v.2 (classical)
var my1 = new Single(); 
var my2 = new Single(); 
>>> my1 === my2 
true 

•  How to make this work?
Singleton v.2 - option 1
var Single = function() { 
  if (typeof Single.instance === “object”) { 
    return Single.instance; 
  } 
  Single.instance = this; 
}; 


•  Drawback – the instance property
is public
… option 2 (closure)
function Single() { 

  var instance = this;  

  // add more to this… 

  Single = function (){ 
    return instance; 
  }; 
} 
Factory
var Polygon = function() {}; 
var triangle = Polygon.factory(‘Triangle’); 
var circle   = Polygon.factory(‘Circle’); 

Polygon.Triangle = function(){}; 
Polygon.Circle   = function(){}; 

Polygon.factory = function(name) { 
  if (typeof Polygon[name] === “function”) { 
    return new Polygon[name]();  
  } 
}; 
And one more thing…
Run JSLint




•  http://jslint.com
•  Integrate with your editor
JSLint
•  missing semi-colons
•  missing curly brackets
•  undeclared vars
•  trailing commas
•  unreachable code
•  for-in loops
•  …
Thank you!

More…
http://jspatterns.com
http://slideshare.net/stoyan
http://jsmag.com column

Contenu connexe

Tendances

Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017Romain Dorgueil
 
Frederick web meetup slides
Frederick web meetup slidesFrederick web meetup slides
Frederick web meetup slidesPat Zearfoss
 
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014Fábio Pimentel
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high schooljekkilekki
 
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b....NET Conf UY
 
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and ProfitScala Refactoring for Fun and Profit
Scala Refactoring for Fun and ProfitTomer Gabel
 
ITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function ProgrammingITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function ProgrammingIstanbul Tech Talks
 
Understanding Prototypal Inheritance
Understanding Prototypal InheritanceUnderstanding Prototypal Inheritance
Understanding Prototypal InheritanceGuy Royse
 
C# Starter L02-Classes and Objects
C# Starter L02-Classes and ObjectsC# Starter L02-Classes and Objects
C# Starter L02-Classes and ObjectsMohammad Shaker
 
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETLSimple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETLRomain Dorgueil
 
Quark: A Purely-Functional Scala DSL for Data Processing & Analytics
Quark: A Purely-Functional Scala DSL for Data Processing & AnalyticsQuark: A Purely-Functional Scala DSL for Data Processing & Analytics
Quark: A Purely-Functional Scala DSL for Data Processing & AnalyticsJohn De Goes
 

Tendances (14)

Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017
 
Frederick web meetup slides
Frederick web meetup slidesFrederick web meetup slides
Frederick web meetup slides
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014
Conceitos e prática no desenvolvimento iOS - Mobile Conf 2014
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high school
 
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...
I just met you, and "this" is crazy, but here's my NaN, so call(me), maybe? b...
 
Scala Refactoring for Fun and Profit
Scala Refactoring for Fun and ProfitScala Refactoring for Fun and Profit
Scala Refactoring for Fun and Profit
 
ITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function ProgrammingITT 2015 - Saul Mora - Object Oriented Function Programming
ITT 2015 - Saul Mora - Object Oriented Function Programming
 
Understanding Prototypal Inheritance
Understanding Prototypal InheritanceUnderstanding Prototypal Inheritance
Understanding Prototypal Inheritance
 
C# Starter L02-Classes and Objects
C# Starter L02-Classes and ObjectsC# Starter L02-Classes and Objects
C# Starter L02-Classes and Objects
 
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETLSimple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
 
Quark: A Purely-Functional Scala DSL for Data Processing & Analytics
Quark: A Purely-Functional Scala DSL for Data Processing & AnalyticsQuark: A Purely-Functional Scala DSL for Data Processing & Analytics
Quark: A Purely-Functional Scala DSL for Data Processing & Analytics
 
Prototype
PrototypePrototype
Prototype
 

En vedette

Practical functional java script
Practical functional java scriptPractical functional java script
Practical functional java scriptthinkphp
 
Functional programming in java script
Functional programming in java scriptFunctional programming in java script
Functional programming in java scriptthinkphp
 
Principii Poo
Principii PooPrincipii Poo
Principii Poothinkphp
 
Knut Morris Pratt Algorithm
Knut Morris Pratt AlgorithmKnut Morris Pratt Algorithm
Knut Morris Pratt Algorithmthinkphp
 
Placemaker
PlacemakerPlacemaker
Placemakerthinkphp
 
PHP 5.3 And PHP 6 A Look Ahead
PHP 5.3 And PHP 6 A Look AheadPHP 5.3 And PHP 6 A Look Ahead
PHP 5.3 And PHP 6 A Look Aheadthinkphp
 
String searching
String searching String searching
String searching thinkphp
 
String kmp
String kmpString kmp
String kmpthinkphp
 

En vedette (8)

Practical functional java script
Practical functional java scriptPractical functional java script
Practical functional java script
 
Functional programming in java script
Functional programming in java scriptFunctional programming in java script
Functional programming in java script
 
Principii Poo
Principii PooPrincipii Poo
Principii Poo
 
Knut Morris Pratt Algorithm
Knut Morris Pratt AlgorithmKnut Morris Pratt Algorithm
Knut Morris Pratt Algorithm
 
Placemaker
PlacemakerPlacemaker
Placemaker
 
PHP 5.3 And PHP 6 A Look Ahead
PHP 5.3 And PHP 6 A Look AheadPHP 5.3 And PHP 6 A Look Ahead
PHP 5.3 And PHP 6 A Look Ahead
 
String searching
String searching String searching
String searching
 
String kmp
String kmpString kmp
String kmp
 

Similaire à Javascript patterns

Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScriptMichael Girouard
 
JavaScript For CSharp Developer
JavaScript For CSharp DeveloperJavaScript For CSharp Developer
JavaScript For CSharp DeveloperSarvesh Kushwaha
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScriptJulie Iskander
 
Front end fundamentals session 1: javascript core
Front end fundamentals session 1: javascript coreFront end fundamentals session 1: javascript core
Front end fundamentals session 1: javascript coreWeb Zhao
 
JavaScript - Programming Languages course
JavaScript - Programming Languages course JavaScript - Programming Languages course
JavaScript - Programming Languages course yoavrubin
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016Codemotion
 
Prototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptPrototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptSunny Sharma
 
Property Based Testing in PHP
Property Based Testing in PHPProperty Based Testing in PHP
Property Based Testing in PHPvinaikopp
 
Awesomeness of JavaScript…almost
Awesomeness of JavaScript…almostAwesomeness of JavaScript…almost
Awesomeness of JavaScript…almostQuinton Sheppard
 
OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingPurvik Rana
 
2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritancepedro.carvalho
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptzand3rs
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascriptMiao Siyu
 

Similaire à Javascript patterns (20)

Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
JavaScript For CSharp Developer
JavaScript For CSharp DeveloperJavaScript For CSharp Developer
JavaScript For CSharp Developer
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
Front end fundamentals session 1: javascript core
Front end fundamentals session 1: javascript coreFront end fundamentals session 1: javascript core
Front end fundamentals session 1: javascript core
 
JavaScript - Programming Languages course
JavaScript - Programming Languages course JavaScript - Programming Languages course
JavaScript - Programming Languages course
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
 
JavaScript Abstraction
JavaScript AbstractionJavaScript Abstraction
JavaScript Abstraction
 
Core concepts-javascript
Core concepts-javascriptCore concepts-javascript
Core concepts-javascript
 
Prototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScriptPrototype & Inheritance in JavaScript
Prototype & Inheritance in JavaScript
 
Property Based Testing in PHP
Property Based Testing in PHPProperty Based Testing in PHP
Property Based Testing in PHP
 
Awesomeness of JavaScript…almost
Awesomeness of JavaScript…almostAwesomeness of JavaScript…almost
Awesomeness of JavaScript…almost
 
JavaScript OOP
JavaScript OOPJavaScript OOP
JavaScript OOP
 
OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android Programming
 
2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance2012 oct-12 - java script inheritance
2012 oct-12 - java script inheritance
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicox
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScript
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascript
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
 

Plus de thinkphp

Atom Web Services
Atom Web ServicesAtom Web Services
Atom Web Servicesthinkphp
 
Json Rpc Proxy Generation With Php
Json Rpc Proxy Generation With PhpJson Rpc Proxy Generation With Php
Json Rpc Proxy Generation With Phpthinkphp
 
Php And Web Services
Php And Web ServicesPhp And Web Services
Php And Web Servicesthinkphp
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Conceptsthinkphp
 
Ajax Introduction Presentation
Ajax   Introduction   PresentationAjax   Introduction   Presentation
Ajax Introduction Presentationthinkphp
 

Plus de thinkphp (6)

Atom Web Services
Atom Web ServicesAtom Web Services
Atom Web Services
 
Json Rpc Proxy Generation With Php
Json Rpc Proxy Generation With PhpJson Rpc Proxy Generation With Php
Json Rpc Proxy Generation With Php
 
Php And Web Services
Php And Web ServicesPhp And Web Services
Php And Web Services
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Ajax Introduction Presentation
Ajax   Introduction   PresentationAjax   Introduction   Presentation
Ajax Introduction Presentation
 
OOP
OOPOOP
OOP
 

Dernier

Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 

Dernier (20)

Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 

Javascript patterns