SlideShare a Scribd company logo
1 of 84
Download to read offline
JavaScript for PHP developers
Stoyan Stefanov

March 11, 2011
Confoo.ca, Montreal
Stoyan Stefanov
¤  SAP Labs in Montreal

¤  Yahoo! Music, Web Performance, Search,
  YSlow, smush.it
¤  Facebook
Stoyan Stefanov - Books
JavaScript – first impressions
DOM/BOM
¤  These days libraries can take care of most pains

¤  Let’s focus on the core JavaScript (ECMAScript)
  language
JavaScript core
¤  C-like syntax

¤  Small built-in API
  ¤  (I’ll show you most of it in 15 minutes)
Strange things
¤  Functions are objects

¤  Functions provide scope

¤  Closures (in PHP since 5.3)

¤  Prototypes

¤  No classes
Syntax
Mostly the same as PHP
Variables
var n = 1;	
	
    $n = 1;
Variables
var b = true;	
	
    $b = true;
Variables
var s = "confoo";	
	
    $s = "confoo";
Arrays
var a =       [1,2,3];	
	
    $a = array(1,2,3);
Assoc arrays
var o = {	
  	     	   	"one": 1,	
  	     	   	"two": 2	
  	     	 };	
   $o = array(	
  	     	   	"one" => 1,	
  	     	   	"two" => 2	
  	     	 );
if
if (1 === 1) {	
 	universe = "fine";	
};	
if (1 === 1) {	
 	$universe = "fine";	
};
falsy values
0, "", false, undefined, null	
	
0 == ""    // true	
0 === "" // false
switch
var a = 1;	
var result = "";	
switch (a) {	
     case 1:     // strict comparison	
       result = "a is 1"; 	
       break;	
     default:	
       result = "@#$";	
}
try-catch
try {	
     throw new Error('ouch');	
} catch (e) {	
     msg = e.message;	
}	
try {	
     throw new Exception('ouch');	
} catch (Exception $e) {	
     $msg = $e->getMessage();	
}
while
var i = 0, out = '';	
while (i < 100) {	
     out += ++i + ",";	
}	
$i = 0; $out = '';	
while ($i < 100) {	
     $out .= ++$i . ",";	
}
do-while
var i = 0, out = '';	
do {	
  out += ++i + ",";	
} while (i < 100);	
$i = 0; $out = '';	
do {	
  $out .= ++$i . ",";	
} while ($i < 100);
for
for (var i = 0, out = ''; i < 100; i++) {	
     out += i + ',';	
}	
	
for ($i = 0, $out = ''; $i < 100; $i++) {	
     $out .= $i . ',';	
}
for-in/foreach
for (var k in stuff) {	
     keys += k;	
     values += stuff[k];	
}	
foreach ($stuff as $k => $v) {	
     $keys .= $k;	
     $values .= $v;	
}
function
function junction(a, b) {	
     return a * b;	
}	
function junction($a, $b) {	
     return $a * $b;	
}
function
function junction(a, b) {	
     b = b || 2;	
     return a * b;	
}	
function junction($a, $b = 2) {	
     return $a * $b;	
}
function
function junction(a, b) {	
     b = typeof b !== "undefined" ? b : 2;	
     return a * b;	
}	
function junction($a, $b = 2) {	
     return $a * $b;	
}
functions are objects
var junction = function (a, b) {	
  return a * b;	
};	
junction(3, 4); // 12	
junction.length; // 2
functions are objects
junction.call(null, 3, 4); // 12	

junction.apply(null, [3, 4]); // 12	

	

	

	

call_user_func('junction', 3, 4);	

call_user_func_array('junction', array(3, 4));
closures
var junction = function (a, b) {	
  return a * b;	
};	
junction(3, 4); // 12	
$junction = function($a, $b) {	
  return $a * $b;	
};	
$junction(3, 4); // 12
function scope
$a = function() {	

  $c = 3;	

  $b = function($a, $b) {	

      return $c * $a * $b;	

  };	

  return $b;	

};	

$b = $a();	

$b(1, 2); // 0 in PHP, 6 in JS
Constructors/Classes
var fido = new Dog();	
	
	
    $fido = new Dog();
PHP Class
class Dog {	

     var $name;	

     function __construct($name) {	

          $this->name = $name;	

     } 	

     function getName() {	

          return $this->name;	

     }	
                                  $fido = new Dog("Fido");	
}	                                $fido->getName(); // Fido
JS constructor function
function Dog (name) {	

     this.name = name;	

     this.getName = function () {	

       return this.name;	

     };	

}	

var fido = new Dog("Fido");	

fido.getName();
JS constructor function
¤  Constructors are just functions

¤  Functions called with new…	

¤  …return this…	

¤  …implicitly.
Constructor and prototype
function Dog (name) {	

     this.name = name;	

}	

Dog.prototype.getName = function () {	

     return this.name;	

};	

var fido = new Dog("Fido");	

fido.getName();
Prototypes
¤  Every function has a prototype property

¤  It’s useless, unless …

¤  … the functions is called with new.
Constructor and prototype
function Dog (name) {	

     this.name = name;	

}	

Dog.prototype.getName = function () {	

     return this.name;	

};	

var fido = new Dog("Fido");	

fido.getName(); // Fido
Object literals
var fido = {	
  name: "Fido",	
  getName: function() {	
       return this.name;	
  }	
};	
fido.getName(); // Fido
Object literals
var fido = {};
Object literals
var fido = {};	
fido.name = "Fido";
Object literals
var fido = {	
    name: "Fido" 	
};	
	
fido.name; // Fido
Object literals
var fido = {	
  name: "Fido",	
  getName: function() {	
       return this.name;	
  }	
};	
fido.getName(); // Fido
Literals
var fido = {};	
fido.name = "Fido";	
	
$fido = (object) array();	
$fido->name = "Fido";	
	
$fido = new stdClass();	
$fido->name = "Fido";
Literals in PHP
$fido = (object)array();	
$fido->name = 'Fido';	
$fido->getName = function() {	
    return $GLOBALS['fido']->name;	
};	
	
$method = $fido->getName;	
echo $method();
Literals in PHP
$fido = new JSObject();	
$fido->name = 'Fido';	
$fido->getName = function($self) {	
    return $self->name;	
};	
	
$fido->getName(); // Fido
Literals in PHP
class JSObject {	

     function __call($name, $args) {	

          if (is_callable($this->$name)) {	

               array_unshift($args, $this);	

               return call_user_func_array($this->$name, $args);	

          }	

     }	

}
Funny operators
¤  typeof
  ¤  typeof 1; // "number"	
  ¤  typeof(1);	

¤  instanceof
  ¤  ([1,2]) instanceof Array; // true	
  ¤  ([1,2]) instanceof Object; // true	

¤  delete
  ¤  var o = {a: 1}; delete o.a; o.a; // undefined	

¤  void
  ¤  returns undefined whatever the operand
The built-in API
In 15 minutes or less
Global object
¤  something Like $GLOBALS[] but object

¤  May or may not be accessible directly

¤  Accessible as window in browsers
3 global properties
¤  NaN	

¤  Infinity	

¤  undefined
9 global functions
¤  4 number-related                PHP:
  ¤  parseInt()	                intval()	
  ¤  parseFloat()	            floatval()	
  ¤  isNaN()	                   is_nan()	
  ¤  isFinite()	             is_finite()	

¤  4 to encode/decode URIs
  ¤  encodeURIComponent()	   urlencode()	
  ¤  decodeURIComponent()	   urldecode()	
  ¤  encodeURI()	                   ??()	
  ¤  decodeURI()	                   ??()	

¤  eval()	                      eval()
9+ constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number()	

¤  Boolean()	

¤  Error(), SyntaxError()…	

¤  Date()
We don’t need no constructors
¤  object literals	

// yep	
var o = {};	
// nope	
var o = new Object();
We don’t need no constructors
¤  array literals	

// yep	
var a = [];	
// nope	
var a = new Array();
We don’t need no constructors
¤  regular expression literals	

// yep	
var re = /[a-z]/gmi;	
// proly nope	
var re = new RegExp("[a-z]", "gmi");
We don’t need no constructors
¤  functions	

// yep	
var f = function(a, b) {return a + b;};	
// yep	
function f(a, b) {return a + b;}	
//   nope	
var f = new Function("a, b",	
     	     	     	   	   "return a + b;");
We don’t need no constructors
¤  strings	

// yep	
var s = "confoo";	
// nope	
var s = new String("confoo");	
	
s.substr(3); // "foo"	
"confoo".substr(0, 4); // "conf"
We don’t need no constructors
¤  numbers	

// yep	
var n = 1.2345;	
// nope	
var n = new Number(1.2345);	
	
n.toFixed(2); // 1.23
We don’t need no constructors
¤  boolean	

// yep	
var b = true;	
// nope, why would you ever	
var b = new Boolean(true);
We don’t need no constructors
¤  Errors	

throw new Error("Ouch");	
// but you could also	
throw {	
   name: "MyError",	
   message: "Ouch"	
};
Constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number()	

¤  Boolean()	

¤  Error(), SyntaxError()…	


¤  Date()
The built-in API (contd.)
Properties and methods
Object.prototype
var o = {}; 	
o.toString(); // "[object Object]"	
o.toLocaleString(); // "[object Object]"	
o.valueOf() === o; // true	
o.hasOwnProperty('toString'); // false 	

o.propertyIsEnumerable('toString'); // false	
o.isPrototypeOf(Array); // false	
o.constructor === Object; // true
Array.prototype
var a = [1,2,3,4];	
a.length; // 4	
a.push('dude'); // 5, the length	
a.pop(); // "dude"	
a.unshift('dude'); // 5, the length	
a.shift(); // "dude"	
a.concat(5,6,7); // [1,2,3,4,5,6,7]
Array.prototype
a.sort(callback); 	
a.indexOf(3); // 2	
a.lastIndexOf(3); // 2	
a.slice(1, 3);   // [2, 3]	
a.splice(...); // remove and add	
a.reverse(); // [4, 3, 2, 1]	
a.join(' > '); // implode()
RegExp.prototype
var re = /[a-z]/gmi;	
	
re.exec("somestring"); // returns matches	
re.test("somestring"); // returns true|false	
	

re.lastIndex;	
re.source; // "[a-z]"	
	
/[0-9]/g.global;        // true	
/[0-9]/m.multiline;     // true	
/[0-9]/i.ignoreCase; // true
Function.prototype
¤  length	

¤  name // not standard	

¤  call()	

¤  apply()
String.prototype
var s = "confoo";           	
s.length; // 6	
s.indexOf('o'); // 1	
s.lastIndexOf('o'); // 5	
s.charAt(1); // "o"	
s.charCodeAt(1); // 111
String.prototype
s.toLowerCase();	
s.toUppercase();	
s.toLocaleLowerCase();	
s.toLocaleUpperCase();	
s.localeCompare();
String.prototype
s.split(/f/); // ["con", "oo"]	
s.concat('.ca'); // "confoo.ca"	
s.search(/foo/); // 3	
s.replace(/o/g, "@"); // c@nf@@	
s.match(/[a-z]/g); // ["c", "o", "n", ..	
s.slice(3, 6); // "foo"	
s.substring(0, 3); // "con", substr() too
Number.protoype
new Number(123).toFixed(2); // "123.00"	
(1000000000000).toExponential(); // "1e+12"	
(1000000000000).toPrecision(3);   // "1.00e+12"	
	
Number.MAX_VALUE; // 1.7976931348623157e+308	
Number.MIN_VALUE; // 5e-324	
Number.POSITIVE_INFINITY; // Infinity	
Number.NEGATIVE_INFINITY; // -Infinity	
Number.NaN; // NaN
Math
¤  Not a constructor

¤  Constants

    	Math.E, Math.PI... and 6 more	
¤  Methods

    	Math.min(), Math.max(), 	
    	Math.random(), Math.sin() 	
    	... and 14 more
Error.prototype
¤  name	

¤  message
Date.prototype
¤  You’re on your own!
var d = new Date(2011, 3, 11);	

d.getDate(); d.getDay(); d.getFullYear(); d.getHours();
d.getMilliseconds(); d.getMinutes(); d.getMonth();
d.getSeconds(); d.getTime(); d.getTimezoneOffset();
d.getUTCDate(); d.getUTCDay(); d.getUTCFullYear();
d.getUTCHours(); d.getUTCMilliseconds(); d.getUTCMinutes();
d.getUTCMonth(); d.getUTCSeconds(); d.getYear(); d.setDate();
d.setFullYear(); d.setHours(); d.setMilliseconds();
d.setMinutes(); d.setMonth(); d.setSeconds(); d.setTime();
d.setUTCDate(); d.setUTCFullYear(); d.setUTCHours();
d.setUTCMilliseconds(); d.setUTCMinutes(); d.setUTCMonth();
d.setUTCSeconds(); d.setYear(); d.toDateString();
d.toGMTString(); d.toLocaleDateString(); d.toLocaleFormat();
d.toLocaleTimeString(); d.toString(); d.toTimeString();
d.toUTCString();	

Date.now(); Date.parse(); Date.UTC();
Constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number() + Math	

¤  Boolean()	

¤  Error(), SyntaxError()…	

¤  Date()
Quiz
What have we learned today?
¤  JavaScript has classes



      C
¤  Arrays are objects



      C
¤  Functions are objects



      C
¤  Classes have a prototype property




      C
¤  Objects have a prototype property




      C
¤  Functions have a prototype
 property



      C
¤  Prototype properties are used with
   new	



      C
phpjs.org
¤  When you miss a PHP function in JavaScript
Learning
¤  https://developer.mozilla.org/en/JavaScript/
  Reference
¤  ECMAScript tweeps: @DmitrySoshnikov,
  @abozhilov, @kangax, @WebReflection
¤  http://jsmentors.com




¤  Slides: http://slideshare.net/stoyan/
Thank you!

More Related Content

What's hot

Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design PatternsAddy Osmani
 
Understanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneUnderstanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneDeepu S Nath
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high schooljekkilekki
 
Javascript Prototype Visualized
Javascript Prototype VisualizedJavascript Prototype Visualized
Javascript Prototype Visualized军 沈
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptLeonardo Borges
 
Javascript basics
Javascript basicsJavascript basics
Javascript basicsSolv AS
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
Google Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidGoogle Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidJordi Gerona
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeManoj Kumar
 
From android/java to swift (3)
From android/java to swift (3)From android/java to swift (3)
From android/java to swift (3)allanh0526
 
Type Driven Development with TypeScript
Type Driven Development with TypeScriptType Driven Development with TypeScript
Type Driven Development with TypeScriptGarth Gilmour
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala CodeTech Triveni
 
Stuff you didn't know about action script
Stuff you didn't know about action scriptStuff you didn't know about action script
Stuff you didn't know about action scriptChristophe Herreman
 
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoJustjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoPaulo Silveira
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primariaimartini
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahNick Plante
 

What's hot (20)

Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design Patterns
 
Javascript tid-bits
Javascript tid-bitsJavascript tid-bits
Javascript tid-bits
 
Understanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneUnderstanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG June
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high school
 
Javascript Prototype Visualized
Javascript Prototype VisualizedJavascript Prototype Visualized
Javascript Prototype Visualized
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScript
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Google Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidGoogle Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & Android
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik Cube
 
From android/java to swift (3)
From android/java to swift (3)From android/java to swift (3)
From android/java to swift (3)
 
Type Driven Development with TypeScript
Type Driven Development with TypeScriptType Driven Development with TypeScript
Type Driven Development with TypeScript
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala Code
 
Stuff you didn't know about action script
Stuff you didn't know about action scriptStuff you didn't know about action script
Stuff you didn't know about action script
 
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoJustjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primaria
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery Fundamentals
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 

Viewers also liked

ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-CTaketo Sano
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scamtheoilman
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi StandardKieran F Ring
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Paula Mills
 
The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)Naeem Zafar
 
Cmc chapter 09
Cmc chapter 09Cmc chapter 09
Cmc chapter 09Jane Hamze
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative financeLuca Sbardella
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For PcmcRanjit Gadgil
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234Ashok Reddy
 
Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Stephen Anderson
 
Infographics Jayan Narayanan
Infographics   Jayan NarayananInfographics   Jayan Narayanan
Infographics Jayan NarayananJayan Narayanan
 
E Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 PersoenlichkeitE Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 Persoenlichkeitthomasabauer
 
mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Team
 
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Martina Goehring
 
Unbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichUnbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichFESD GKr
 
Kelantan
KelantanKelantan
Kelantanwmzuri
 
Financial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterFinancial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterChristophe Langlois
 
EdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale DataEdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale Datagu wendong
 

Viewers also liked (20)

ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-C
 
Tagging - web 2 expo 2008
Tagging - web 2 expo 2008Tagging - web 2 expo 2008
Tagging - web 2 expo 2008
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scam
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi Standard
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09
 
The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)
 
Cmc chapter 09
Cmc chapter 09Cmc chapter 09
Cmc chapter 09
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative finance
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For Pcmc
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234
 
Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)
 
PMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource ManagementPMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource Management
 
Infographics Jayan Narayanan
Infographics   Jayan NarayananInfographics   Jayan Narayanan
Infographics Jayan Narayanan
 
E Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 PersoenlichkeitE Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 Persoenlichkeit
 
mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"
 
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
 
Unbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichUnbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_Österreich
 
Kelantan
KelantanKelantan
Kelantan
 
Financial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterFinancial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on Twitter
 
EdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale DataEdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale Data
 

Similar to JavaScript for PHP developers

Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Seri Moth
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolveXSolve
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Lucas Witold Adamus
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5arajivmordani
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016Manoj Kumar
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Kang-min Liu
 
Node.js for PHP developers
Node.js for PHP developersNode.js for PHP developers
Node.js for PHP developersAndrew Eddie
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with YieldJason Myers
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Developmentjsmith92
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConRafael Dohms
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript LiteracyDavid Jacobs
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistenceHugo Hamon
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performancejohndaviddalton
 

Similar to JavaScript for PHP developers (20)

Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?
 
The Beauty of Java Script
The Beauty of Java ScriptThe Beauty of Java Script
The Beauty of Java Script
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5a
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)
 
Node.js for PHP developers
Node.js for PHP developersNode.js for PHP developers
Node.js for PHP developers
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with Yield
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
 
Php 5.6
Php 5.6Php 5.6
Php 5.6
 
Wakanday JS201 Best Practices
Wakanday JS201 Best PracticesWakanday JS201 Best Practices
Wakanday JS201 Best Practices
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
 
Oops in php
Oops in phpOops in php
Oops in php
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performance
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 

More from Stoyan Stefanov

JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patternsStoyan Stefanov
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social PluginsStoyan Stefanov
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъдеStoyan Stefanov
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhereStoyan Stefanov
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scriptingStoyan Stefanov
 
Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Stoyan Stefanov
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesStoyan Stefanov
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performanceStoyan Stefanov
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimizationStoyan Stefanov
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scriptingStoyan Stefanov
 
The business of performance
The business of performanceThe business of performance
The business of performanceStoyan Stefanov
 

More from Stoyan Stefanov (20)

Reactive JavaScript
Reactive JavaScriptReactive JavaScript
Reactive JavaScript
 
YSlow hacking
YSlow hackingYSlow hacking
YSlow hacking
 
Liking performance
Liking performanceLiking performance
Liking performance
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social Plugins
 
Social Button BFFs
Social Button BFFsSocial Button BFFs
Social Button BFFs
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъде
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhere
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scripting
 
WPO @ PubCon 2010
WPO @ PubCon 2010WPO @ PubCon 2010
WPO @ PubCon 2010
 
Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
Performance patterns
Performance patternsPerformance patterns
Performance patterns
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web Sites
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performance
 
3-in-1 YSlow
3-in-1 YSlow3-in-1 YSlow
3-in-1 YSlow
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimization
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scripting
 
The business of performance
The business of performanceThe business of performance
The business of performance
 

Recently uploaded

Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarThousandEyes
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfTejal81
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameKapil Thakar
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 

Recently uploaded (20)

Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? Webinar
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First Frame
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 

JavaScript for PHP developers