SlideShare a Scribd company logo
1 of 133
Download to read offline
JavaScript for PHP Developers
                   Ed Finkler
                   @funkatron
                   coj@funkatron.com


                   May 18, 2010


                   #tekX #js4php
                   http://joind.in/1564

Wednesday, May 19, 2010
What is this?




  2     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
A practical overview of JS
                             for the PHP developer

                                                   Stop c+p'ing, start writing




  3     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
NOT CS-oriented

                                                       I'm too dumb for that




  4     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
My experiences and best practices

                                                                 FWIW




  5     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
JavaScript dev is opinionated

                                                JS devs are kind of dickheads




  6     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
History of JavaScript




  7     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Brendan Eich




  8     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
"Mocha"




  9     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
"LiveScript"




 10     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
"JavaScript"

                                            Seemed like a good idea at the time




                              http://www.infoworld.com/d/developer-world/javascript-creator-ponders-past-future-704




 11     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
ECMAScript

                                                                 Yeesh




 12     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Core JavaScript




 13     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Baseline is JS 1.5

                                                aka ECMAScript 3, circa 1999




 14     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Dynamically typed

                                                          Hey, I know that!




 15     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Object-based




 16     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Object-oriented

                                                      But not how you think




 17     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Functional

                                                         First class, baby!




 18     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Malleable

                                                 Like giving clay to a monkey




 19     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Core is pretty darn small

                           You mean I don't have to memorize 4,500 function names?




 20     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Core JS
               Core Objects                                           Core Global Functions
               Boolean                                                decodeURI
               Number                                                 decodeURIComponent
               String                                                 encodeURI
               Array                                                  encodeURIComponent
               Object                                                 eval
               Function                                               isFinite
               RegExp                                                 isNaN
               Date                                                   parseFloat
                                                                      parseInt




 21     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
What's missing?

                                                          All the cool stuff!




 22     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
File i/o




 23     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Networking




 24     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
DB APIs




 25     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
DOM

                                          Yep, the DOM is not part of JavaScript




 26     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
So what's it good for?

                                                     Please don't leave yet.




 27     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
So what's it good for?

                                                     Please don't leave yet.




 28     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Asynchronous actions

                                                                 What?




 29     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Like GUI stuff

                                                                   Oh!




 30     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Browsers!




 31     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Web Runtime Platforms!




 32     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Widget engines!

                                                               Dear God




 33     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Server-side platforms




 34     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Node.js

                                                          http://nodejs.org/




 35     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Narwhal

                                                       http://narwhaljs.org/




 36     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
v8cgi

                                               http://code.google.com/p/v8cgi/




 37     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
SSJS isn't terribly mature

                                                     Don't quit your day job




 38     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Syntax




 39     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
C/Java-like

                                                               Like PHP!




 40     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Variable names don't start with '$'

                                                            But they can.




 41     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Concatenation with '+'

                                                                Not dot.




 42     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Dot for members. Or []

                                                Not '->'. You will screw this up.




 43     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Always case-sensitive

                                                  You will also screw this up.




 44     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Semicolons are optional

                                           But you had better always use them




 45     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                             Semicolons!




 46     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Data Types

                                                              "Primitives"




 47     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Numbers

                                                        Integers and floats




 48     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Booleans

                                                                 Truthy




 49     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Strings




 50     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
null

                                                        Not NULL, not Null.




 51     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
undefined

                                  Declared, but no value set. Not the same as null




 52     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
That's it.




 53     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Other elements




 54     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Objects

                                           MDC: "Named containers for values"




 55     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Arrays, Date, RegExp

                                                              All objects




 56     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Functions

                                  MDC: "Procedures your application can perform"




 57     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Scope

                                                               Hang on!




 58     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
More bleed than PHP




 59     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Globals automatically available

                                               No need for global declaration




 60     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Declaring variables

                                                           With or without




 61     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
With var

                                                         scope maintained




 62     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Without var

                                                  Oops! Automatically global




 63     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Globals are properties of
                                  global object

                                                        window in browsers




 64     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                                globals!




 65     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Closures

                                                          This is awesome




 66     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Using a var from outside function

                           Anything within context of function declaration is fair game




 67     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                               Closures




 68     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Literals

                                                                Literally




 69     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Numbers

                                                                  Right.




 70     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Booleans

                                                                   Yep.




 71     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
RegExp

                                                                Hmmm.




 72     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
['a','r','r','a','y','s'];

                                                              Hey there.




 73     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
{object:"literals"};

                                                               Oh snap!




 74     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                                 Literals




 75     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Operators




 76     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Mostly like PHP

                                                     + , = == === < > ! && ||




 77     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
this




 78     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
new

                                                 Remember, no classes in JS




 79     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
in

                                                       Does this key exist?




 80     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
instanceof

                                                          "is X of type Y?"




 81     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
typeof

                                                  Returns string of core type




 82     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
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"




 83     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Type conversion




 84     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
parseInt(val, [radix])

                               Radix is optional, but Douglas Crockford will hate you




 85     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
parseFloat(val)

                                       Like parseInt, returns NaN if cannot convert




 86     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
String(obj)




 87     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Number(obj)




 88     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Boolean(obj)




                                                  http://jibbering.com/faq/notes/type-conversion/




 89     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Functions




 90     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
In the procedural tradition




 91     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
As objects




 92     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
As constructors




 93     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Function arguments

                                                          An array, kind of




 94     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                        Fun with functions




 95     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Objects




 96     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
As hashes

                                                      Or associative arrays




 97     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
As static modules




 98     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                       Objects as modules




 99     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
As instance-able objects

                                                              Not a word




100     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
No classes

                                  Just make the object and have a constructor func




101     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
No visibility levels

                                                 No public, private, protected




102     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Prototypes & inheritance




103     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Every object has a prototype




104     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Prototype provides
                                       attributes of object




105     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Modifying prototype changes
                             all objects that use it




106     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Prototype has .constructor

                                          points to constructor function of object




107     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                  Prototypes and inheritance




108     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Dates

                                                          Kinda suck in JS




109     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
eval()

                                                    Almost a necessary evil




110     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Malleability

                                                              That again




111     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
BREAK TIME

                                                             Cookies???




112     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
JS in the browser




113     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Execution model

                                                 Non-sequential, long-running




114     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Single threaded




115     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Browser compatibility

                                                          Oh the humanity




116     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
DOM APIs

                                                               Woo wee!




117     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Elements and events

                                           Words and pictures and movin' stuff!




118     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
These are terrible

                                                               Trust me




119     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
I'm not going to teach you these

                                                              They suck




120     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Just use jQuery

                                                   Basically fixes everything




121     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                DOM manipulation and events




122     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
HTTP interaction




123     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
JSON is love




124     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Use JSON2.js




125     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Newer browsers have
                                native implementations




126     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
CODE TIME

                                                   Web APIs, woooooooooo!




127     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Resources




128     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Resources:Code
      • SpazCore
        http://github.com/funkatron/spazcore
      • Underscore.js
        http://documentcloud.github.com/underscore/
      • http://delicious.com/funka7ron/javascript




129     <Name of Talk> - <Who> - <Where> - <When>
Wednesday, May 19, 2010
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/
130     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
Resources:Books
      • JavaScript: The Definitive Guide
        David Flanagan
      • JavaScript: The Good Parts
        Douglas Crockford
      • High-Performance JavaScript
        Various




131     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
References




132     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010
References
      • Mozilla Dev Center: Core JavaScript Guide
      • Eloquent JavaScript




133     JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010
Wednesday, May 19, 2010

More Related Content

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 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 (8)

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 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

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Recently uploaded (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
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...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

JavaScript for PHP Developers

  • 1. JavaScript for PHP Developers Ed Finkler @funkatron coj@funkatron.com May 18, 2010 #tekX #js4php http://joind.in/1564 Wednesday, May 19, 2010
  • 2. What is this? 2 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 3. A practical overview of JS for the PHP developer Stop c+p'ing, start writing 3 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 4. NOT CS-oriented I'm too dumb for that 4 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 5. My experiences and best practices FWIW 5 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 6. JavaScript dev is opinionated JS devs are kind of dickheads 6 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 7. History of JavaScript 7 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 8. Brendan Eich 8 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 9. "Mocha" 9 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 10. "LiveScript" 10 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 11. "JavaScript" Seemed like a good idea at the time http://www.infoworld.com/d/developer-world/javascript-creator-ponders-past-future-704 11 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 12. ECMAScript Yeesh 12 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 13. Core JavaScript 13 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 14. Baseline is JS 1.5 aka ECMAScript 3, circa 1999 14 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 15. Dynamically typed Hey, I know that! 15 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 16. Object-based 16 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 17. Object-oriented But not how you think 17 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 18. Functional First class, baby! 18 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 19. Malleable Like giving clay to a monkey 19 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 20. Core is pretty darn small You mean I don't have to memorize 4,500 function names? 20 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 21. Core JS Core Objects Core Global Functions Boolean decodeURI Number decodeURIComponent String encodeURI Array encodeURIComponent Object eval Function isFinite RegExp isNaN Date parseFloat parseInt 21 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 22. What's missing? All the cool stuff! 22 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 23. File i/o 23 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 24. Networking 24 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 25. DB APIs 25 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 26. DOM Yep, the DOM is not part of JavaScript 26 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 27. So what's it good for? Please don't leave yet. 27 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 28. So what's it good for? Please don't leave yet. 28 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 29. Asynchronous actions What? 29 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 30. Like GUI stuff Oh! 30 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 31. Browsers! 31 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 32. Web Runtime Platforms! 32 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 33. Widget engines! Dear God 33 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 34. Server-side platforms 34 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 35. Node.js http://nodejs.org/ 35 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 36. Narwhal http://narwhaljs.org/ 36 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 37. v8cgi http://code.google.com/p/v8cgi/ 37 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 38. SSJS isn't terribly mature Don't quit your day job 38 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 39. Syntax 39 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 40. C/Java-like Like PHP! 40 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 41. Variable names don't start with '$' But they can. 41 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 42. Concatenation with '+' Not dot. 42 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 43. Dot for members. Or [] Not '->'. You will screw this up. 43 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 44. Always case-sensitive You will also screw this up. 44 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 45. Semicolons are optional But you had better always use them 45 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 46. CODE TIME Semicolons! 46 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 47. Data Types "Primitives" 47 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 48. Numbers Integers and floats 48 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 49. Booleans Truthy 49 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 50. Strings 50 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 51. null Not NULL, not Null. 51 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 52. undefined Declared, but no value set. Not the same as null 52 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 53. That's it. 53 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 54. Other elements 54 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 55. Objects MDC: "Named containers for values" 55 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 56. Arrays, Date, RegExp All objects 56 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 57. Functions MDC: "Procedures your application can perform" 57 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 58. Scope Hang on! 58 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 59. More bleed than PHP 59 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 60. Globals automatically available No need for global declaration 60 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 61. Declaring variables With or without 61 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 62. With var scope maintained 62 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 63. Without var Oops! Automatically global 63 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 64. Globals are properties of global object window in browsers 64 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 65. CODE TIME globals! 65 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 66. Closures This is awesome 66 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 67. Using a var from outside function Anything within context of function declaration is fair game 67 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 68. CODE TIME Closures 68 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 69. Literals Literally 69 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 70. Numbers Right. 70 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 71. Booleans Yep. 71 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 72. RegExp Hmmm. 72 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 73. ['a','r','r','a','y','s']; Hey there. 73 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 74. {object:"literals"}; Oh snap! 74 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 75. CODE TIME Literals 75 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 76. Operators 76 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 77. Mostly like PHP + , = == === < > ! && || 77 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 78. this 78 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 79. new Remember, no classes in JS 79 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 80. in Does this key exist? 80 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 81. instanceof "is X of type Y?" 81 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 82. typeof Returns string of core type 82 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 83. 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" 83 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 84. Type conversion 84 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 85. parseInt(val, [radix]) Radix is optional, but Douglas Crockford will hate you 85 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 86. parseFloat(val) Like parseInt, returns NaN if cannot convert 86 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 87. String(obj) 87 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 88. Number(obj) 88 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 89. Boolean(obj) http://jibbering.com/faq/notes/type-conversion/ 89 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 90. Functions 90 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 91. In the procedural tradition 91 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 92. As objects 92 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 93. As constructors 93 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 94. Function arguments An array, kind of 94 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 95. CODE TIME Fun with functions 95 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 96. Objects 96 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 97. As hashes Or associative arrays 97 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 98. As static modules 98 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 99. CODE TIME Objects as modules 99 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 100. As instance-able objects Not a word 100 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 101. No classes Just make the object and have a constructor func 101 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 102. No visibility levels No public, private, protected 102 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 103. Prototypes & inheritance 103 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 104. Every object has a prototype 104 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 105. Prototype provides attributes of object 105 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 106. Modifying prototype changes all objects that use it 106 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 107. Prototype has .constructor points to constructor function of object 107 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 108. CODE TIME Prototypes and inheritance 108 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 109. Dates Kinda suck in JS 109 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 110. eval() Almost a necessary evil 110 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 111. Malleability That again 111 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 112. BREAK TIME Cookies??? 112 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 113. JS in the browser 113 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 114. Execution model Non-sequential, long-running 114 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 115. Single threaded 115 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 116. Browser compatibility Oh the humanity 116 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 117. DOM APIs Woo wee! 117 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 118. Elements and events Words and pictures and movin' stuff! 118 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 119. These are terrible Trust me 119 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 120. I'm not going to teach you these They suck 120 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 121. Just use jQuery Basically fixes everything 121 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 122. CODE TIME DOM manipulation and events 122 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 123. HTTP interaction 123 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 124. JSON is love 124 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 125. Use JSON2.js 125 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 126. Newer browsers have native implementations 126 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 127. CODE TIME Web APIs, woooooooooo! 127 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 128. Resources 128 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 129. Resources:Code • SpazCore http://github.com/funkatron/spazcore • Underscore.js http://documentcloud.github.com/underscore/ • http://delicious.com/funka7ron/javascript 129 <Name of Talk> - <Who> - <Where> - <When> Wednesday, May 19, 2010
  • 130. 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/ 130 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 131. Resources:Books • JavaScript: The Definitive Guide David Flanagan • JavaScript: The Good Parts Douglas Crockford • High-Performance JavaScript Various 131 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 132. References 132 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010
  • 133. References • Mozilla Dev Center: Core JavaScript Guide • Eloquent JavaScript 133 JavaScript for PHP Developers - Ed Finkler - tek-X - May 18, 2010 Wednesday, May 19, 2010