The Beauty Of Java Script V5a
-
Upload
rajivmordani -
Category
Technology
-
view
974 -
download
0
Transcript of The Beauty Of Java Script V5a
![Page 1: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/1.jpg)
The Beauty of JavaScript
Mike Girouard | AjaxWorld 2008
{ }
![Page 2: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/2.jpg)
Hello.
![Page 3: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/3.jpg)
I am a
Back-end guy in a front-end guy’s clothes
Sr. Developer at Magnani Caruso Dutton
JavaScript hacker since ’99
JavaScript developer/evangelist since ’07
Speaker: lovemikeg.com/talks
Blogger: lovemikeg.com/blog
![Page 4: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/4.jpg)
I’d like to talk about a language like no other.
![Page 5: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/5.jpg)
JavaScript’s core is built on top of many genius ideas.
![Page 6: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/6.jpg)
JavaScript offers classless OOP.
![Page 7: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/7.jpg)
JavaScript is a functional language.
![Page 8: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/8.jpg)
JavaScript runs on the client-side & server-side.
![Page 9: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/9.jpg)
Many brilliant engineers have contributed to JavaScript.
![Page 10: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/10.jpg)
Unfortunately mouse trails left some nasty scars.
![Page 11: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/11.jpg)
Despite it’s !aws, many beautiful features exist.
![Page 12: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/12.jpg)
JavaScript resembles C & Java.
![Page 13: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/13.jpg)
foo.bar = ‘baz’;
![Page 14: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/14.jpg)
if (foo < bar) { // do something}
![Page 15: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/15.jpg)
for (i = 0; i < n; i++) { // do something}
![Page 16: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/16.jpg)
while (i < n) { // do something}
![Page 17: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/17.jpg)
do { // something} while (i < n);
![Page 18: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/18.jpg)
Everything is literal.
![Page 19: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/19.jpg)
var name = ‘Mike G.’;
![Page 20: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/20.jpg)
var age = 25;
![Page 21: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/21.jpg)
var canDrink = true;
![Page 22: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/22.jpg)
var colors = [‘red’, ‘green’, ‘blue’];
![Page 23: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/23.jpg)
var hexColors = { ‘red’ : 0xFF0000, ‘green’ : 0x00FF00, ‘blue’ : 0x0000FF};
![Page 24: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/24.jpg)
var rgbColors = { ‘red’ : [255, 0, 0], ‘green’ : [0, 255, 0], ‘blue’ : [0, 0, 255]};
![Page 25: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/25.jpg)
Subscript notation is bad ass.
![Page 26: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/26.jpg)
(foo.bar === foo[‘bar’])
![Page 27: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/27.jpg)
var callbacks = { ‘#login-form’ : function () { // code to validate a login },
‘#print-btn’ : window.print};
![Page 28: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/28.jpg)
Functions are objects.
![Page 29: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/29.jpg)
var foo = function () { return ++foo.counter;};
foo.counter = 0;
![Page 30: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/30.jpg)
JavaScript is functional.
![Page 31: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/31.jpg)
var foo = function () { // do something};
![Page 32: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/32.jpg)
var id = function () { console.log(this.id);};
lib.addEvent(foo, ‘click’, id);lib.addEvent(bar, ‘click’, id);
![Page 33: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/33.jpg)
mouseLib.rollOver( ‘some-element’, function () { this.src = ‘on.jpg’; }, function () { this.src = ‘off.jpg’; });
![Page 34: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/34.jpg)
(function () {
// do something
})();
![Page 35: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/35.jpg)
var outer, inner;
outer = function () { var counter = 0;
inner = function () { return ++counter; };
return counter;};
![Page 36: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/36.jpg)
Inheritance is achieved through prototypes.
![Page 37: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/37.jpg)
var Foo, Bar;
Foo = function () {};Foo.prototype.bar = 123;
Bar = function () {};Bar.prototype = new Foo;Bar.prototype.bar = 456;
![Page 38: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/38.jpg)
Don’t forget about Ajax.
![Page 39: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/39.jpg)
var xhr;
xhr = new XMLHttpRequest;xhr.onreadystatechange = function (event) { if (xhr.readyState === 4) { console.log(xhr.responseText); };};
xhr.open(‘GET’,document.location.href,true);xhr.send(null);
![Page 40: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/40.jpg)
JavaScript is available of!ine.
![Page 41: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/41.jpg)
![Page 42: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/42.jpg)
![Page 43: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/43.jpg)
![Page 44: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/44.jpg)
![Page 45: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/45.jpg)
Expressive code breeds beautiful patterns.
![Page 46: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/46.jpg)
Self-invocation creates scope.
![Page 47: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/47.jpg)
var foo = ‘bar’;var baz = ‘bif’;
![Page 48: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/48.jpg)
(function () {
var foo = ‘bar’; var baz = ‘bif’;
})();
![Page 49: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/49.jpg)
Load-time de"nition/branching saves trees.
![Page 50: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/50.jpg)
var addEvent = (function () { if (window.addEventListener) { return addW3Event; } else if (window.attachEvent) { return addExplorerEvent; } else { return addLegacyEvent; }})();
![Page 51: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/51.jpg)
var getXHR = (function () { if (window.XMLHttpRequest) { return getW3XHR; } else if (window.ActiveXObject) { return getExplorerXHR; } else { throw ‘No XHR Support.’; }})();
![Page 52: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/52.jpg)
The Module enables private members.
![Page 53: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/53.jpg)
var my.lib = (function () {
var $ = document.getElementById; var cache = {};
return { getElement : function (id) { // do something } };
})();
![Page 54: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/54.jpg)
Lazy function de"nition saves even more trees.
![Page 55: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/55.jpg)
var getResource = function () { var resource, counter;
resource = ‘foo’; counter = 0; getResource = function () { return resource + ‘ has been accessed ’ + (++counter) + ‘ times’; }; return getResource();};
![Page 56: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/56.jpg)
Fragment templates create DOM nodes.
![Page 57: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/57.jpg)
var getEmailTemplate = function () { var email, link, check; email = document.createElement(‘div’); link = document.createElement(‘a’); check = document.createElement(‘input’); email.className = ‘email-item’; email.appendChild(check); email.appendChild(link); return function () { return email.cloneNode(true); };}();
![Page 58: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/58.jpg)
Node registries keep DOM nodes organized.
![Page 59: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/59.jpg)
var d = document;var byId = d.getElementById;var byTag = d.getElementsByTagName;
var elements = { ‘foo’ : byId(‘foo’), ‘bar’ : byId(‘foo’).byTag(‘bar’)[0], ‘links’ : byTag(‘a’)};
![Page 60: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/60.jpg)
Libraries make beautiful abstractions.
![Page 61: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/61.jpg)
Prototype by Sam Stephenson.
![Page 62: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/62.jpg)
$(…)
![Page 63: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/63.jpg)
$$(…) $A(…) $F(…)
$H(…) $R(…) $w(…)
![Page 64: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/64.jpg)
jQuery by John Resig
![Page 65: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/65.jpg)
$(…)
![Page 66: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/66.jpg)
$(‘#print’).click(function () {
$(this).addClass(‘printed’); window.print();
});
![Page 67: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/67.jpg)
YUI by Yahoo!
![Page 68: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/68.jpg)
YAHOOYAHOO.util.DomYAHOO.util.Event
![Page 69: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/69.jpg)
YAHOO.namespace(‘mikeg’);YAHOO.mikeg = (function () {
var $ = YAHOO.util.Dom.get; var $$ = YAHOO.util.Selector.query;
// do stuff
})();
![Page 70: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/70.jpg)
It’s up to us to keep JavaScript Beautiful.
![Page 71: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/71.jpg)
Listen to Doug.
![Page 72: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/72.jpg)
Pick a library, any library.
![Page 73: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/73.jpg)
Protect the global object.
![Page 74: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/74.jpg)
Use *Lint.
![Page 75: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/75.jpg)
Use *Unit.
![Page 76: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/76.jpg)
Educate others.
![Page 77: The Beauty Of Java Script V5a](https://reader033.fdocuments.us/reader033/viewer/2022052619/5552a0f1b4c9051f108b552c/html5/thumbnails/77.jpg)
Thank [email protected]