SlideShare a Scribd company logo
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 (20)

Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design Patterns
Addy Osmani
 
Javascript tid-bits
Javascript tid-bitsJavascript tid-bits
Javascript tid-bits
David Atchley
 
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
Deepu S Nath
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
Daniel Cousineau
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
Daniel Cousineau
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high school
jekkilekki
 
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
Leonardo Borges
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
Solv AS
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Dmitry 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 & Android
Jordi Gerona
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik Cube
Manoj 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 TypeScript
Garth Gilmour
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala Code
Tech 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 script
Christophe 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çado
Paulo Silveira
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primaria
imartini
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery Fundamentals
Doncho Minkov
 
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
Nick Plante
 
Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design Patterns
Addy 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 June
Deepu S Nath
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high school
jekkilekki
 
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
Leonardo Borges
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
Solv AS
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Dmitry 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 & Android
Jordi Gerona
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik Cube
Manoj 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 TypeScript
Garth Gilmour
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala Code
Tech 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 script
Christophe 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çado
Paulo Silveira
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primaria
imartini
 
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
Nick Plante
 

Viewers also liked (20)

Tagging - web 2 expo 2008
Tagging - web 2 expo 2008Tagging - web 2 expo 2008
Tagging - web 2 expo 2008
Kakul Srivastava
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scam
theoilman
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi Standard
Kieran F Ring
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09
Paula 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 09
Jane Hamze
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative finance
Luca Sbardella
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For Pcmc
Ranjit Gadgil
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234
Ashok Reddy
 
Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)
Stephen Anderson
 
PMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource ManagementPMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource Management
Mohamed ElSaadany, PMP, CCP, PMI-RMP, SCE-PE
 
Infographics Jayan Narayanan
Infographics   Jayan NarayananInfographics   Jayan Narayanan
Infographics Jayan Narayanan
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
thomasabauer
 
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_Österreich
FESD GKr
 
Kelantan
KelantanKelantan
Kelantan
wmzuri
 
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
Christophe 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 Data
gu wendong
 
Plan de mejora jefatura de sector 06 21 fts4006o
Plan de mejora jefatura de sector 06  21 fts4006oPlan de mejora jefatura de sector 06  21 fts4006o
Plan de mejora jefatura de sector 06 21 fts4006o
Roberto Carlos Vega Monroy
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scam
theoilman
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi Standard
Kieran F Ring
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09
Paula 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 09
Jane Hamze
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative finance
Luca Sbardella
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For Pcmc
Ranjit Gadgil
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234
Ashok 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 Narayanan
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
thomasabauer
 
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_Österreich
FESD GKr
 
Kelantan
KelantanKelantan
Kelantan
wmzuri
 
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
Christophe 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 Data
gu wendong
 
Plan de mejora jefatura de sector 06 21 fts4006o
Plan de mejora jefatura de sector 06  21 fts4006oPlan de mejora jefatura de sector 06  21 fts4006o
Plan de mejora jefatura de sector 06 21 fts4006o
Roberto Carlos Vega Monroy
 
Ad

Similar to JavaScript for PHP developers (20)

Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
Seri 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 / XSolve
XSolve
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
Giacomo Zinetti
 
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
The Beauty of Java ScriptThe Beauty of Java Script
The Beauty of Java Script
Michael Girouard
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5a
rajivmordani
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016
Manoj Kumar
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
Giovanni Scerra ☃
 
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 developers
Andrew Eddie
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with Yield
Jason Myers
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
jsmith92
 
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
Rafael Dohms
 
Php 5.6
Php 5.6Php 5.6
Php 5.6
Federico Damián Lozada Mosto
 
Wakanday JS201 Best Practices
Wakanday JS201 Best PracticesWakanday JS201 Best Practices
Wakanday JS201 Best Practices
Juergen Fesslmeier
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
David Jacobs
 
Oops in php
Oops in phpOops in php
Oops in php
Gourishankar R Pujar
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
Hugo Hamon
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performance
johndaviddalton
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
Lars Jankowfsky
 
Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
Seri 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 / XSolve
XSolve
 
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 V5a
rajivmordani
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016
Manoj 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 developers
Andrew Eddie
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with Yield
Jason Myers
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
jsmith92
 
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
Rafael Dohms
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
David Jacobs
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
Hugo Hamon
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performance
johndaviddalton
 
Ad

More from Stoyan Stefanov (20)

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

Recently uploaded (20)

Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Nikki Chapple
 
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Peter Bittner
 
Contributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptxContributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptx
Patrick Lumumba
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
Dev Dives: System-to-system integration with UiPath API Workflows
Dev Dives: System-to-system integration with UiPath API WorkflowsDev Dives: System-to-system integration with UiPath API Workflows
Dev Dives: System-to-system integration with UiPath API Workflows
UiPathCommunity
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
AI Emotional Actors: “When Machines Learn to Feel and Perform"
AI Emotional Actors:  “When Machines Learn to Feel and Perform"AI Emotional Actors:  “When Machines Learn to Feel and Perform"
AI Emotional Actors: “When Machines Learn to Feel and Perform"
AkashKumar809858
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
LSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection FunctionLSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection Function
Takahiro Harada
 
European Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility TestingEuropean Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility Testing
Julia Undeutsch
 
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025
Nikki Chapple
 
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Nix(OS) for Python Developers - PyCon 25 (Bologna, Italia)
Peter Bittner
 
Contributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptxContributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptx
Patrick Lumumba
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto CertificateCybersecurity Fundamentals: Apprentice - Palo Alto Certificate
Cybersecurity Fundamentals: Apprentice - Palo Alto Certificate
VICTOR MAESTRE RAMIREZ
 
Improving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevExImproving Developer Productivity With DORA, SPACE, and DevEx
Improving Developer Productivity With DORA, SPACE, and DevEx
Justin Reock
 
Fortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in CybersecurityFortinet Certified Associate in Cybersecurity
Fortinet Certified Associate in Cybersecurity
VICTOR MAESTRE RAMIREZ
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
Dev Dives: System-to-system integration with UiPath API Workflows
Dev Dives: System-to-system integration with UiPath API WorkflowsDev Dives: System-to-system integration with UiPath API Workflows
Dev Dives: System-to-system integration with UiPath API Workflows
UiPathCommunity
 
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
ELNL2025 - Unlocking the Power of Sensitivity Labels - A Comprehensive Guide....
Jasper Oosterveld
 
AI Emotional Actors: “When Machines Learn to Feel and Perform"
AI Emotional Actors:  “When Machines Learn to Feel and Perform"AI Emotional Actors:  “When Machines Learn to Feel and Perform"
AI Emotional Actors: “When Machines Learn to Feel and Perform"
AkashKumar809858
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
LSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection FunctionLSNIF: Locally-Subdivided Neural Intersection Function
LSNIF: Locally-Subdivided Neural Intersection Function
Takahiro Harada
 
European Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility TestingEuropean Accessibility Act & Integrated Accessibility Testing
European Accessibility Act & Integrated Accessibility Testing
Julia Undeutsch
 
STKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 versionSTKI Israel Market Study 2025 final v1 version
STKI Israel Market Study 2025 final v1 version
Dr. Jimmy Schwarzkopf
 

JavaScript for PHP developers