SlideShare a Scribd company logo
1 of 133
Download to read offline
JavaScript for PHP Developers
Ed Finkler
@funkatron
coj@funkatron.com
November 1, 2010
#zendcon #js4php
http://joind.in/2289
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Goodsie.com
2
Invitation code: zendcon
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
What is this?
3
Stop c+p'ing, start writing
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
A practical overview of JS
for the PHP developer
4
I'm too dumb for that
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
NOT CS-oriented
5
FWIW
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
My experiences and best practices
6
JS devs are kind of dickheads
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
JavaScript dev is opinionated
7
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
History of JavaScript
8
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Brendan Eich
9
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
"Mocha"
10
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
"LiveScript"
11
Seemed like a good idea at the time
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
"JavaScript"
12
http://www.infoworld.com/d/developer-world/javascript-creator-ponders-past-future-704
Yeesh
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
ECMAScript
13
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Core JavaScript
14
aka ECMAScript 3, circa 1999
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Baseline is JS 1.5
15
Hey, I know that!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Dynamically typed
16
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Object-based
17
But not how you think
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Object-oriented
18
First class, baby!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Functional
19
Like giving clay to a monkey
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Malleable
20
You mean I don't have to memorize 4,500 function names?
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010
Core is pretty darn small
21
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201022
Core Objects Core Global Functions
Boolean decodeURI
Number decodeURIComponent
String encodeURI
Array encodeURIComponent
Object eval
Function isFinite
RegExp isNaN
Date parseFloat
parseInt
Core JS
All the cool stuff!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201023
What's missing?
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201024
File i/o
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201025
Networking
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201026
DB APIs
Yep, the DOM is not part of JavaScript
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201027
DOM
Please don't leave yet.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201028
So what's it good for?
What?
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201029
Asynchronous actions
Oh!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201030
Like GUI stuff
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201031
Browsers!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201032
Web Runtime Platforms!
Dear God
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201033
Widget engines!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201034
Server-side platforms
http://nodejs.org/
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201035
Node.js
http://narwhaljs.org/
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201036
Narwhal
http://code.google.com/p/v8cgi/
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201037
v8cgi
But it's super fun!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201038
SSJS isn't terribly mature
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201039
Syntax
Like PHP!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201040
C/Java-like
But they can.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201041
Variable names don't start with '$'
Not dot.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201042
Concatenation with '+'
Not '->'. You will screw this up.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201043
Dot for members. Or []
You will also screw this up.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201044
Always case-sensitive
But you had better always use them
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201045
Semicolons are optional
Semicolons!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201046
CODE TIME
"Primitives"
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201047
Data Types
Integers and floats
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201048
Numbers
Truthy
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201049
Booleans
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201050
Strings
Not NULL, not Null.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201051
null
Declared, but no value set. Not the same as null
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201052
undefined
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201053
That's it.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201054
Other elements
MDC: "Named containers for values"
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201055
Objects
All objects
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201056
Arrays, Date, RegExp
MDC: "Procedures your application can perform"
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201057
Functions
Hang on!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201058
Scope
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201059
More bleed than PHP
Functional scope only
No need for global declaration
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201060
Globals automatically available
With or without
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201061
Declaring variables
scope maintained
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201062
With var
Oops! Automatically global
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201063
Without var
window in browsers
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201064
Globals are properties of
global object
globals!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201065
CODE TIME
This is awesome
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201066
Closures
Anything within context of function declaration is fair game
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201067
Using a var from outside function
Closures
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201068
CODE TIME
Literally
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201069
Literals
Right.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201070
Numbers
Yep.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201071
Booleans
Hmmm.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201072
RegExp
Hey there.
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201073
['a','r','r','a','y','s'];
Oh snap!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201074
{object:"literals"};
Literals
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201075
CODE TIME
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201076
Operators
+ , = == === < > ! && ||
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201077
Mostly like PHP
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201078
this
Remember, no classes in JS
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201079
new
Does this key exist?
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201080
in
"is X of type Y?"
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201081
instanceof
Returns string of core type
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201082
typeof
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201083
typeof returns
typeof {} "object"
typeof function() {} "function"
typeof new Function(); "function"
typeof true "boolean"
typeof new Date(); "object" // not "date"; use instanceof
typeof [1,2,3] "object" // not "array"
typeof NaN "number"
typeof null "object"
typeof undefined "undefined"
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201084
Type conversion
Radix is optional, but Douglas Crockford will hate you
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201085
parseInt(val, [radix])
Like parseInt, returns NaN if cannot convert
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201086
parseFloat(val)
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201087
String(obj)
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201088
Number(obj)
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201089
Boolean(obj)
http://jibbering.com/faq/notes/type-conversion/
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201090
Functions
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201091
In the procedural tradition
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201092
As objects
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201093
As constructors
with new
An array, kind of
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201094
Function arguments
Fun with functions
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201095
CODE TIME
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201096
Objects
Or associative arrays
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201097
As hashes
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201098
As static modules
Objects as modules
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201099
CODE TIME
Not a word
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010100
As instance-able objects
Just make the object and have a constructor func
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010101
No classes
No public, private, protected
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010102
No visibility levels
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010103
Prototypes & inheritance
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010104
Every object has a prototype
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010105
Prototype provides
attributes of object
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010106
Modifying prototype changes
all objects that use it
points to constructor function of object
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010107
Prototype has .constructor
Prototypes and inheritance
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010108
CODE TIME
Kinda suck in JS
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010109
Dates
Almost a necessary evil
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010110
eval()
That again
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010111
Malleability
Cookies???
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010112
BREAK TIME
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010113
JS in the browser
Non-sequential, long-running
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010114
Execution model
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010115
Single threaded
Oh the humanity
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010116
Browser compatibility
Woo wee!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010117
DOM APIs
Words and pictures and movin' stuff!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010118
Elements and events
Trust me
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010119
These are terrible
They suck
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010120
I'm not going to teach you these
Basically fixes everything
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010121
Just use jQuery
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010122
HTTP interaction
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010123
The XMLHttpRequest Object
GETing and POSTing
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010124
JSON is love
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010125
Use JSON2.js
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010126
Newer browsers have
native implementations
Web APIs, woooooooooo!
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010127
CODE TIME
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010128
Resources
<Name of Talk> - <Who> - <Where> - <When>
Resources:Code
129
•SpazCore
http://github.com/funkatron/spazcore
•Underscore.js
http://documentcloud.github.com/underscore/
•http://delicious.com/funka7ron/javascript
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010130
Resources:Web
•Mozilla Dev Center: Code JavaScript Guide
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide
•Mozilla Dev Center: Core JavaScript Reference
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference
•Eloquent JavaScript
http://eloquentjavascript.net/
•comp.lang.javascript FAQ
http://jibbering.com/faq/
•Nicholas C. Zakas' Blog
http://www.nczonline.net/
•John Resig's Blog
http://ejohn.org/
•http://wtfjs.com/
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010131
Resources:Books
•JavaScript: The Definitive Guide
David Flanagan
•JavaScript: The Good Parts
Douglas Crockford
•High-Performance JavaScript
Nicholas C. Zakas, et al
•JavaScript Patterns
Stoyan Stefanov
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010132
References
JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010133
References
•Mozilla Dev Center: Core JavaScript Guide
•Eloquent JavaScript

More Related Content

What's hot

Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)Eric Johnson
 
Android maven Road to flutter| Mavenizing Flutter for web
Android maven Road to flutter| Mavenizing Flutter for webAndroid maven Road to flutter| Mavenizing Flutter for web
Android maven Road to flutter| Mavenizing Flutter for webOluwatobiAkinpelu
 
Introduction to Go programming
Introduction to Go programmingIntroduction to Go programming
Introduction to Go programmingExotel
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesGiulio De Donato
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn [INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn Nexus FrontierTech
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Alexander Knowles
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)Aaron Schlesinger
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?gabrielemariotti
 
python training | python course | python online training
python training |  python course |  python online trainingpython training |  python course |  python online training
python training | python course | python online trainingNancy Thomas
 
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015Younggun Kim
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventuremylittleadventure
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Ganesh Samarthyam
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki MizunoNexus FrontierTech
 

What's hot (16)

Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
 
Android maven Road to flutter| Mavenizing Flutter for web
Android maven Road to flutter| Mavenizing Flutter for webAndroid maven Road to flutter| Mavenizing Flutter for web
Android maven Road to flutter| Mavenizing Flutter for web
 
Introduction to Go programming
Introduction to Go programmingIntroduction to Go programming
Introduction to Go programming
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn [INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
[INNOVATUBE] Tech Talk #3: Golang - Vũ Nguyễn
 
Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10Elixir + GraphQL = Absinthe 2019.04.10
Elixir + GraphQL = Absinthe 2019.04.10
 
Why you should care about Go (Golang)
Why you should care about Go (Golang)Why you should care about Go (Golang)
Why you should care about Go (Golang)
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?
 
python training | python course | python online training
python training |  python course |  python online trainingpython training |  python course |  python online training
python training | python course | python online training
 
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015
 
Go lang
Go langGo lang
Go lang
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 

Viewers also liked

Mphasis php & .net
Mphasis php & .net   Mphasis php & .net
Mphasis php & .net anilpavuluri
 
PHPUnit from a developer's perspective
PHPUnit from a developer's perspectivePHPUnit from a developer's perspective
PHPUnit from a developer's perspectiveTushar Joshi
 
Kayla Horbacz Resume
Kayla Horbacz ResumeKayla Horbacz Resume
Kayla Horbacz ResumeKayla Horbacz
 
Mark Tortorici "The Technology Stack"
Mark Tortorici "The Technology Stack"Mark Tortorici "The Technology Stack"
Mark Tortorici "The Technology Stack"Talent42
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developersDaniel Krook
 
Dale draggoo resume m read only
Dale draggoo resume m read onlyDale draggoo resume m read only
Dale draggoo resume m read onlydfdraggoo
 
AlexLu_Resume
AlexLu_ResumeAlexLu_Resume
AlexLu_ResumeAlex Lu
 
Resume--Alpheus E Madsen
Resume--Alpheus E MadsenResume--Alpheus E Madsen
Resume--Alpheus E Madsensnowfarthing
 
Click here to download my CV in Word format.doc
Click here to download my CV in Word format.docClick here to download my CV in Word format.doc
Click here to download my CV in Word format.docbutest
 
Accounting solved mcqs
Accounting solved mcqsAccounting solved mcqs
Accounting solved mcqslucky1671
 
Mba, resume format
Mba, resume formatMba, resume format
Mba, resume formatAnshul Gupta
 

Viewers also liked (20)

Mphasis php & .net
Mphasis php & .net   Mphasis php & .net
Mphasis php & .net
 
PHPUnit from a developer's perspective
PHPUnit from a developer's perspectivePHPUnit from a developer's perspective
PHPUnit from a developer's perspective
 
Kayla Horbacz Resume
Kayla Horbacz ResumeKayla Horbacz Resume
Kayla Horbacz Resume
 
Mark Tortorici "The Technology Stack"
Mark Tortorici "The Technology Stack"Mark Tortorici "The Technology Stack"
Mark Tortorici "The Technology Stack"
 
CV LinkedIn
CV LinkedInCV LinkedIn
CV LinkedIn
 
K.Hutchins Resume
K.Hutchins ResumeK.Hutchins Resume
K.Hutchins Resume
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developers
 
Dale draggoo resume m read only
Dale draggoo resume m read onlyDale draggoo resume m read only
Dale draggoo resume m read only
 
Resume
ResumeResume
Resume
 
AlexLu_Resume
AlexLu_ResumeAlexLu_Resume
AlexLu_Resume
 
My Resume
My ResumeMy Resume
My Resume
 
Resume--Alpheus E Madsen
Resume--Alpheus E MadsenResume--Alpheus E Madsen
Resume--Alpheus E Madsen
 
Click here to download my CV in Word format.doc
Click here to download my CV in Word format.docClick here to download my CV in Word format.doc
Click here to download my CV in Word format.doc
 
Accounting solved mcqs
Accounting solved mcqsAccounting solved mcqs
Accounting solved mcqs
 
Tarun hait cv
Tarun hait cvTarun hait cv
Tarun hait cv
 
tomtaila
tomtailatomtaila
tomtaila
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 
2+ Css Html Exp Resume Karthikeyan
2+ Css Html Exp Resume   Karthikeyan2+ Css Html Exp Resume   Karthikeyan
2+ Css Html Exp Resume Karthikeyan
 
Mba, resume format
Mba, resume formatMba, resume format
Mba, resume format
 
Seminar report on robotics (line follower) ppt
Seminar report on robotics (line follower) pptSeminar report on robotics (line follower) ppt
Seminar report on robotics (line follower) ppt
 

Similar to JavaScript for PHP Developers

Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016Eric Poe
 
"Развитие ветки PHP-7"
"Развитие ветки PHP-7""Развитие ветки PHP-7"
"Развитие ветки PHP-7"Badoo Development
 
Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018Eric Poe
 
Last Month in PHP - September 2016
Last Month in PHP - September 2016Last Month in PHP - September 2016
Last Month in PHP - September 2016Eric Poe
 
Last Month in PHP - October 2016
Last Month in PHP - October 2016Last Month in PHP - October 2016
Last Month in PHP - October 2016Eric Poe
 
Last Month in PHP - November 2016
Last Month in PHP - November 2016Last Month in PHP - November 2016
Last Month in PHP - November 2016Eric Poe
 
Last Month in PHP - June through Mid-July 2017
Last Month in PHP - June through Mid-July 2017Last Month in PHP - June through Mid-July 2017
Last Month in PHP - June through Mid-July 2017Eric Poe
 
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...Trivadis
 
Listen and look at your PHP code
Listen and look at your PHP codeListen and look at your PHP code
Listen and look at your PHP codeGabriele Santini
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizzaJon Durán
 
Api details for american syscorp
Api details for american syscorpApi details for american syscorp
Api details for american syscorpCarmor Bass
 
API Details For Ascitconsultancyservices.com
API Details For Ascitconsultancyservices.comAPI Details For Ascitconsultancyservices.com
API Details For Ascitconsultancyservices.comCarmor Bass
 
Taking PHP to the next level
Taking PHP to the next levelTaking PHP to the next level
Taking PHP to the next levelDavid Coallier
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NETNETFest
 
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework ProjectRakuten Group, Inc.
 
Keeping a codebase fresh for over a decade
Keeping a codebase fresh for over a decadeKeeping a codebase fresh for over a decade
Keeping a codebase fresh for over a decadeChristian Keuerleber
 
Cross Platform Web Applications Using ASP.NET Core 1.0
Cross Platform Web Applications Using ASP.NET Core 1.0Cross Platform Web Applications Using ASP.NET Core 1.0
Cross Platform Web Applications Using ASP.NET Core 1.0Lohith Goudagere Nagaraj
 

Similar to JavaScript for PHP Developers (20)

Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016
 
"Развитие ветки PHP-7"
"Развитие ветки PHP-7""Развитие ветки PHP-7"
"Развитие ветки PHP-7"
 
Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018
 
Last Month in PHP - September 2016
Last Month in PHP - September 2016Last Month in PHP - September 2016
Last Month in PHP - September 2016
 
Last Month in PHP - October 2016
Last Month in PHP - October 2016Last Month in PHP - October 2016
Last Month in PHP - October 2016
 
Last Month in PHP - November 2016
Last Month in PHP - November 2016Last Month in PHP - November 2016
Last Month in PHP - November 2016
 
Last Month in PHP - June through Mid-July 2017
Last Month in PHP - June through Mid-July 2017Last Month in PHP - June through Mid-July 2017
Last Month in PHP - June through Mid-July 2017
 
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...
Trivadis TechEvent 2017 Querying distributed data with SQL and Apache Drill b...
 
Listen and look at your PHP code
Listen and look at your PHP codeListen and look at your PHP code
Listen and look at your PHP code
 
PHP Internals
PHP InternalsPHP Internals
PHP Internals
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizza
 
Api details for american syscorp
Api details for american syscorpApi details for american syscorp
Api details for american syscorp
 
API Details For Ascitconsultancyservices.com
API Details For Ascitconsultancyservices.comAPI Details For Ascitconsultancyservices.com
API Details For Ascitconsultancyservices.com
 
Intro to JavaScript
Intro to JavaScriptIntro to JavaScript
Intro to JavaScript
 
Php test fest
Php test festPhp test fest
Php test fest
 
Taking PHP to the next level
Taking PHP to the next levelTaking PHP to the next level
Taking PHP to the next level
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
 
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
 
Keeping a codebase fresh for over a decade
Keeping a codebase fresh for over a decadeKeeping a codebase fresh for over a decade
Keeping a codebase fresh for over a decade
 
Cross Platform Web Applications Using ASP.NET Core 1.0
Cross Platform Web Applications Using ASP.NET Core 1.0Cross Platform Web Applications Using ASP.NET Core 1.0
Cross Platform Web Applications Using ASP.NET Core 1.0
 

More from funkatron

Building mobile apps with JavaScript and PHP
Building mobile apps with JavaScript and PHPBuilding mobile apps with JavaScript and PHP
Building mobile apps with JavaScript and PHPfunkatron
 
Secure PHP Development with Inspekt
Secure PHP Development with InspektSecure PHP Development with Inspekt
Secure PHP Development with Inspektfunkatron
 
Building Desktop RIAs with JavaScript and PHP - ZendCon09
Building Desktop RIAs with JavaScript and PHP - ZendCon09Building Desktop RIAs with JavaScript and PHP - ZendCon09
Building Desktop RIAs with JavaScript and PHP - ZendCon09funkatron
 
Building Desktop RIAs With PHP And JavaScript
Building Desktop RIAs With PHP And JavaScriptBuilding Desktop RIAs With PHP And JavaScript
Building Desktop RIAs With PHP And JavaScriptfunkatron
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Phpfunkatron
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with  PHP, HTML & Javascript  in AIRBuilding Desktop RIAs with  PHP, HTML & Javascript  in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRfunkatron
 
Securing the PHP Environment with PHPSecInfo - OSCON 2008
Securing the PHP Environment with PHPSecInfo - OSCON 2008Securing the PHP Environment with PHPSecInfo - OSCON 2008
Securing the PHP Environment with PHPSecInfo - OSCON 2008funkatron
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRBuilding Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRfunkatron
 
Securing the PHP Environment with PHPSecInfo
Securing the PHP Environment with PHPSecInfoSecuring the PHP Environment with PHPSecInfo
Securing the PHP Environment with PHPSecInfofunkatron
 

More from funkatron (9)

Building mobile apps with JavaScript and PHP
Building mobile apps with JavaScript and PHPBuilding mobile apps with JavaScript and PHP
Building mobile apps with JavaScript and PHP
 
Secure PHP Development with Inspekt
Secure PHP Development with InspektSecure PHP Development with Inspekt
Secure PHP Development with Inspekt
 
Building Desktop RIAs with JavaScript and PHP - ZendCon09
Building Desktop RIAs with JavaScript and PHP - ZendCon09Building Desktop RIAs with JavaScript and PHP - ZendCon09
Building Desktop RIAs with JavaScript and PHP - ZendCon09
 
Building Desktop RIAs With PHP And JavaScript
Building Desktop RIAs With PHP And JavaScriptBuilding Desktop RIAs With PHP And JavaScript
Building Desktop RIAs With PHP And JavaScript
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Php
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with  PHP, HTML & Javascript  in AIRBuilding Desktop RIAs with  PHP, HTML & Javascript  in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIR
 
Securing the PHP Environment with PHPSecInfo - OSCON 2008
Securing the PHP Environment with PHPSecInfo - OSCON 2008Securing the PHP Environment with PHPSecInfo - OSCON 2008
Securing the PHP Environment with PHPSecInfo - OSCON 2008
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRBuilding Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIR
 
Securing the PHP Environment with PHPSecInfo
Securing the PHP Environment with PHPSecInfoSecuring the PHP Environment with PHPSecInfo
Securing the PHP Environment with PHPSecInfo
 

Recently uploaded

Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2DianaGray10
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemSafe Software
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Dynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationDynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationBuild Intuit
 
Transport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MITransport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MIRomil Mishra
 
Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementDianaGray10
 
Deliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceDeliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceOpsTree solutions
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationDianaGray10
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdfHulkTheDevil
 
Which standard is best for your content?
Which standard is best for your content?Which standard is best for your content?
Which standard is best for your content?Rustici Software
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 

Recently uploaded (20)

Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
Efficiencies in RPA with UiPath and CyberArk Technologies - Session 2
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data Ecosystem
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Dynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationDynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientation
 
Transport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MITransport in Open Pits______SM_MI10415MI
Transport in Open Pits______SM_MI10415MI
 
Automation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions managementAutomation Ops Series: Session 3 - Solutions management
Automation Ops Series: Session 3 - Solutions management
 
Deliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceDeliver Latency Free Customer Experience
Deliver Latency Free Customer Experience
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automation
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdf
 
Which standard is best for your content?
Which standard is best for your content?Which standard is best for your content?
Which standard is best for your content?
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 

JavaScript for PHP Developers

  • 1. JavaScript for PHP Developers Ed Finkler @funkatron coj@funkatron.com November 1, 2010 #zendcon #js4php http://joind.in/2289
  • 2. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Goodsie.com 2 Invitation code: zendcon
  • 3. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 What is this? 3
  • 4. Stop c+p'ing, start writing JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 A practical overview of JS for the PHP developer 4
  • 5. I'm too dumb for that JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 NOT CS-oriented 5
  • 6. FWIW JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 My experiences and best practices 6
  • 7. JS devs are kind of dickheads JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 JavaScript dev is opinionated 7
  • 8. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 History of JavaScript 8
  • 9. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Brendan Eich 9
  • 10. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 "Mocha" 10
  • 11. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 "LiveScript" 11
  • 12. Seemed like a good idea at the time JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 "JavaScript" 12 http://www.infoworld.com/d/developer-world/javascript-creator-ponders-past-future-704
  • 13. Yeesh JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 ECMAScript 13
  • 14. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Core JavaScript 14
  • 15. aka ECMAScript 3, circa 1999 JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Baseline is JS 1.5 15
  • 16. Hey, I know that! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Dynamically typed 16
  • 17. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Object-based 17
  • 18. But not how you think JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Object-oriented 18
  • 19. First class, baby! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Functional 19
  • 20. Like giving clay to a monkey JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Malleable 20
  • 21. You mean I don't have to memorize 4,500 function names? JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010 Core is pretty darn small 21
  • 22. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201022 Core Objects Core Global Functions Boolean decodeURI Number decodeURIComponent String encodeURI Array encodeURIComponent Object eval Function isFinite RegExp isNaN Date parseFloat parseInt Core JS
  • 23. All the cool stuff! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201023 What's missing?
  • 24. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201024 File i/o
  • 25. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201025 Networking
  • 26. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201026 DB APIs
  • 27. Yep, the DOM is not part of JavaScript JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201027 DOM
  • 28. Please don't leave yet. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201028 So what's it good for?
  • 29. What? JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201029 Asynchronous actions
  • 30. Oh! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201030 Like GUI stuff
  • 31. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201031 Browsers!
  • 32. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201032 Web Runtime Platforms!
  • 33. Dear God JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201033 Widget engines!
  • 34. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201034 Server-side platforms
  • 35. http://nodejs.org/ JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201035 Node.js
  • 36. http://narwhaljs.org/ JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201036 Narwhal
  • 37. http://code.google.com/p/v8cgi/ JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201037 v8cgi
  • 38. But it's super fun! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201038 SSJS isn't terribly mature
  • 39. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201039 Syntax
  • 40. Like PHP! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201040 C/Java-like
  • 41. But they can. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201041 Variable names don't start with '$'
  • 42. Not dot. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201042 Concatenation with '+'
  • 43. Not '->'. You will screw this up. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201043 Dot for members. Or []
  • 44. You will also screw this up. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201044 Always case-sensitive
  • 45. But you had better always use them JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201045 Semicolons are optional
  • 46. Semicolons! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201046 CODE TIME
  • 47. "Primitives" JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201047 Data Types
  • 48. Integers and floats JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201048 Numbers
  • 49. Truthy JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201049 Booleans
  • 50. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201050 Strings
  • 51. Not NULL, not Null. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201051 null
  • 52. Declared, but no value set. Not the same as null JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201052 undefined
  • 53. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201053 That's it.
  • 54. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201054 Other elements
  • 55. MDC: "Named containers for values" JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201055 Objects
  • 56. All objects JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201056 Arrays, Date, RegExp
  • 57. MDC: "Procedures your application can perform" JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201057 Functions
  • 58. Hang on! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201058 Scope
  • 59. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201059 More bleed than PHP Functional scope only
  • 60. No need for global declaration JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201060 Globals automatically available
  • 61. With or without JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201061 Declaring variables
  • 62. scope maintained JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201062 With var
  • 63. Oops! Automatically global JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201063 Without var
  • 64. window in browsers JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201064 Globals are properties of global object
  • 65. globals! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201065 CODE TIME
  • 66. This is awesome JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201066 Closures
  • 67. Anything within context of function declaration is fair game JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201067 Using a var from outside function
  • 68. Closures JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201068 CODE TIME
  • 69. Literally JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201069 Literals
  • 70. Right. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201070 Numbers
  • 71. Yep. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201071 Booleans
  • 72. Hmmm. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201072 RegExp
  • 73. Hey there. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201073 ['a','r','r','a','y','s'];
  • 74. Oh snap! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201074 {object:"literals"};
  • 75. Literals JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201075 CODE TIME
  • 76. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201076 Operators
  • 77. + , = == === < > ! && || JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201077 Mostly like PHP
  • 78. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201078 this
  • 79. Remember, no classes in JS JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201079 new
  • 80. Does this key exist? JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201080 in
  • 81. "is X of type Y?" JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201081 instanceof
  • 82. Returns string of core type JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201082 typeof
  • 83. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201083 typeof returns typeof {} "object" typeof function() {} "function" typeof new Function(); "function" typeof true "boolean" typeof new Date(); "object" // not "date"; use instanceof typeof [1,2,3] "object" // not "array" typeof NaN "number" typeof null "object" typeof undefined "undefined"
  • 84. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201084 Type conversion
  • 85. Radix is optional, but Douglas Crockford will hate you JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201085 parseInt(val, [radix])
  • 86. Like parseInt, returns NaN if cannot convert JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201086 parseFloat(val)
  • 87. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201087 String(obj)
  • 88. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201088 Number(obj)
  • 89. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201089 Boolean(obj) http://jibbering.com/faq/notes/type-conversion/
  • 90. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201090 Functions
  • 91. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201091 In the procedural tradition
  • 92. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201092 As objects
  • 93. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201093 As constructors with new
  • 94. An array, kind of JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201094 Function arguments
  • 95. Fun with functions JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201095 CODE TIME
  • 96. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201096 Objects
  • 97. Or associative arrays JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201097 As hashes
  • 98. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201098 As static modules
  • 99. Objects as modules JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 201099 CODE TIME
  • 100. Not a word JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010100 As instance-able objects
  • 101. Just make the object and have a constructor func JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010101 No classes
  • 102. No public, private, protected JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010102 No visibility levels
  • 103. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010103 Prototypes & inheritance
  • 104. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010104 Every object has a prototype
  • 105. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010105 Prototype provides attributes of object
  • 106. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010106 Modifying prototype changes all objects that use it
  • 107. points to constructor function of object JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010107 Prototype has .constructor
  • 108. Prototypes and inheritance JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010108 CODE TIME
  • 109. Kinda suck in JS JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010109 Dates
  • 110. Almost a necessary evil JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010110 eval()
  • 111. That again JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010111 Malleability
  • 112. Cookies??? JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010112 BREAK TIME
  • 113. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010113 JS in the browser
  • 114. Non-sequential, long-running JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010114 Execution model
  • 115. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010115 Single threaded
  • 116. Oh the humanity JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010116 Browser compatibility
  • 117. Woo wee! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010117 DOM APIs
  • 118. Words and pictures and movin' stuff! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010118 Elements and events
  • 119. Trust me JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010119 These are terrible
  • 120. They suck JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010120 I'm not going to teach you these
  • 121. Basically fixes everything JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010121 Just use jQuery
  • 122. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010122 HTTP interaction
  • 123. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010123 The XMLHttpRequest Object GETing and POSTing
  • 124. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010124 JSON is love
  • 125. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010125 Use JSON2.js
  • 126. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010126 Newer browsers have native implementations
  • 127. Web APIs, woooooooooo! JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010127 CODE TIME
  • 128. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010128 Resources
  • 129. <Name of Talk> - <Who> - <Where> - <When> Resources:Code 129 •SpazCore http://github.com/funkatron/spazcore •Underscore.js http://documentcloud.github.com/underscore/ •http://delicious.com/funka7ron/javascript
  • 130. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010130 Resources:Web •Mozilla Dev Center: Code JavaScript Guide https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide •Mozilla Dev Center: Core JavaScript Reference https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference •Eloquent JavaScript http://eloquentjavascript.net/ •comp.lang.javascript FAQ http://jibbering.com/faq/ •Nicholas C. Zakas' Blog http://www.nczonline.net/ •John Resig's Blog http://ejohn.org/ •http://wtfjs.com/
  • 131. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010131 Resources:Books •JavaScript: The Definitive Guide David Flanagan •JavaScript: The Good Parts Douglas Crockford •High-Performance JavaScript Nicholas C. Zakas, et al •JavaScript Patterns Stoyan Stefanov
  • 132. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010132 References
  • 133. JavaScript for PHP Developers - Ed Finkler - ZendCon - November 1, 2010133 References •Mozilla Dev Center: Core JavaScript Guide •Eloquent JavaScript