SlideShare a Scribd company logo
Piyush Katariya 
corporate.piyush@gmail.com
 First appearance in Netscape Navigator 2.0 in Sept 1995 
 Microsoft launched JScript as alternative in Aug 1996 
 Request for Standardization in Nov 1996 
 ECMA-262 specification in June 1997 
 Third edition in Dec 1999 
 Fifth edition in Dec 2009 
 Sixth edition expected by mid 2015 
 Today – Preferred programming language of the Web 
 Not limited to Web Browsers – node.js, ringo.js
 Imperative, Object Oriented, Functional, and Prototypal 
 Dynamic 
 Single Threaded 
 Asynchronous, Event Driven 
 Sandboxed 
 God created the earth in 7 days. 
Brendan Eich created JavaScript in 10 days. 
UI Thread 
Browser 
DOM 
Work Queue 
JS Engine Layout Engine 
Operating System 
C P U G P U
 Never mind ! Everything is a var 
 var stringVariable = “JavaScript” 
 var booleanVariable = true 
 var intVariable = 10 
 var floatVariable = 10.5 
 Numbers are treated as float 
 null !== undefined 
 Falsy values – 0 (zero), NaN, ‘’, false, null, undefined
 Object is collection of key–value pairs with optional hidden link to prototype object 
 Instantiation 
 var obj = new Object() 
 var objShortHand = { } 
 var objWithInitialValue = { “property” : “value”} 
 var objTheUltimate = Object.create(parentObject) 
 Access 
 obj.property 
 obj[“property”] 
 obj.nestedObj.property 
 obj[“nestedObj”].property 
 Runtime Mutation 
 obj.newProperty = “value” 
 obj.nestedObj = { “property” : “value”} 
 obj.nestedObj[“property”] = “different value” 
 Deletion 
 delete obj.property
 Callable first class citizen 
 Linked to Function.prototype linked to Object.prototype 
 Can be passed and return as object 
 No Overloading 
 Definitions 
 var add = new Function(‘a’, ‘b’, ‘return a + b’); 
 var add = function (a, b) { return a + b; }; 
 function add(a, b) { return a + b;} 
 Blessed with 
 this 
 arguments
Function invocation (Direct Invocation) 
 add(1, 2) 
 isPalindrome(‘madam’) 
 this bound to global object !!!
Method Invocation 
 Method => a function stored as property of object 
 this bound to method holder object 
var obj = { 
value : 0, //zero 
increment : function (inc) { 
this.value += typeof inc === ‘number’ ? inc : 1; 
} 
} 
obj.increment(1) ; // 1 
obj.increment(2); // 3
var someClass = function (property) { 
this.publicProperty = property; 
var privateVariable = “value”; 
this.publicMethod = function () { 
//code for method definition 
}; 
var privateMethod = function () { 
//code for method definition 
}; 
// return this; 
}
Constructor Invocation 
 JS way of creating objects OO style 
var EmployeeClass = function (firstName, designation) { 
this.firstName = firstName; 
this.designation = designation; 
}; 
EmployeeClass.protoype.getFirstName = function () { return this.firstName;}; 
EmployeeClass.protoype.getDesignation = function () { return this.designation;}; 
var employee = new EmployeeClass(‘Piyush’, ‘Software Dev’) 
employee.getFirstName(); // ‘Piyush’ 
employee.getDesignation(); // ‘Software Dev’
Apply Invocation (Reflective Invocation) 
var argsArray = [2, 3]; 
var sum = add.apply( null, argsArray); // 3 
//OR 
var sum = add.call( null, 2, 3); //3 
var firstName = EmployeeClass.getFirstName.apply(empObject); 
//OR 
var firstName = EmployeeClass.getFirstName.call(empObject);
 Facilitates late(runtime) binding 
Function.prototype.bind = function (objToBind) { 
var self = this; 
return function () { 
var argArr = Array.prototype.slice.call(arguments); 
return self.apply(objToBind || null, argArr); 
}; 
}
 Use when some of the inputs to function are always known 
Function.prototype.curry = function () { 
var initArgs = Array.prototype.slice.call(arguments); 
var self = this; 
return function () { 
var args = Array.prototype.slice.call(arguments); 
return self.apply(null, initArgs.concat(args)) 
} 
};
 Never ever ever make use for loop again while operating on Arrays ! 
 var names = [‘Piyush’, ‘James’, ‘Shwetha’, ‘Kapil’, ‘Praveen’, ‘Matt’, ‘Nag’, ‘Shabina’] 
 map => conversion function which get executed for every element 
 names.map(function(name){ return name.substring(0, 3); }) 
 filter => logical condition function to consider only sub set of array 
 names.filter(function(name){ return name.indexOf(‘i’) > 0; }) 
 reduce => compute result by considering each element with optional initial value 
 names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }) 
 names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }, ‘ Madhu’) 
 sort => comparison function to order the element in custom fashion 
 names.sort() 
 names.sort(function(name1, name2) { return name1 < name2; }) 
 forEach => alternative to for loop to just focus on operation 
 names.forEach(function(name) { console.log(name); }) 
 every => does every element in array satisfies the logical condition 
 some => does at least one element in array satisfies the logical condition 
 reduceRight => same as reduce but iterates array from last to first index
 It’s a LIVE chain
 Avoid global variables and functions 
 Use parseInt(obj, 10) 
 eval function is evil ! 
 ‘===’ and ‘!== ’ for comparison 
 Never use void, becoz its operator ! 
 Always prefix var with variable declaration 
 Use semicolons everywhere at EOL 
 Never augment built in objects 
 Consider underscore.js as default choice 
 Use JSLint for code inspection 
 And of course above all, Do Meditate ! 
var clockOnce = setTimeout(fn, delay) 
 Execute function <fn> after <delay> milliseconds 
 Queue function <fn> to execute after <delay> milliseconds 
 Used to divide highly computationally complex(CPU bound) tasks 
 Cancellation => clearTimeout(clockOnce) 
var timer = setInterval(fn, delay) 
 Execute function <fn> after every <delay> milliseconds 
 Queue function <fn> to execute after every <delay> milliseconds 
 Cancellation => clearInterval(timer)
var counterModule = ( function( ) { 
var privateCount = 0; 
function changeBy(val) { 
return privateCount += val; 
} 
return { 
increment : function() { 
changeBy(1); 
}, 
decrement : function() { 
changeBy(-1); 
}, 
currentValue : function() { 
return privateCount; 
} 
}; 
} ) ( );
var Singleton = ( function () { 
var instance; 
function createInstance() { 
var object = new Object("I am the only instance"); 
return object; 
} 
return { 
getInstance : function () { 
if (! instance) { 
instance = createInstance(); 
} 
return instance; 
} 
}; 
})();
 Why ? 
 Higher level abstraction and constructs 
 Type safety 
 Declarative - More focus on WHAT need to be done instead of HOW 
 Stick to one worthy language for end to end application stack 
 Usage 
 Code in your own language 
 Compile it into JS (either offline or in browser itself ) 
 Run in browser 
 Support debugging for original language in browser using source maps 
 Options 
 CoffeeScript 
 TypeScript 
 Dart 
 ScalaJS 
 PythonJS 
 ClojureScript 
 More at this link
 Process of removing all unnecessary characters and 
modifying source code spread over single or multiple 
file without changing its functionality 
 Advantages 
 Single artifact for whole application 
 Reduced size of code 
 Obfuscated code 
 Applicable for JS and CSS
 JavaScript : The Good Parts by Douglas Crockford 
 JavaScript Pattern by Stoyan Stefanov 
 Wikipedia.org
 jQuery - for DOM access and manipulation 
 Node.js – server side JS 
 Require.js - async module loader 
 Backbone.js – client side MVC 
 Angular.js – powerpack SPA framework
Thank You

More Related Content

What's hot (20)

PPTX
Advanced Javascript
Dhruvin Shah
 
PDF
Functional Programming in Java
Premanand Chandrasekaran
 
KEY
Object oriented javascript
Garrison Locke
 
PDF
Continuations in scala (incomplete version)
Fuqiang Wang
 
PPTX
Exploring Kotlin language basics for Android App development
Jayaprakash R
 
PDF
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
PPTX
jQuery (intermediate)
Madhukar Anand
 
PPTX
Functional programming principles and Java 8
Dragos Balan
 
PPTX
JavaScript Fundamentals
Lasantha Bandara
 
PDF
Model with actors and implement with Akka
Ngoc Dao
 
PPTX
Advanced Object Oriented JavaScript (prototype, closure, scope, design patterns)
raja kvk
 
PPTX
TypeScript Overview
Aniruddha Chakrabarti
 
PDF
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
 
PDF
Oslo.versioned objects - Deep Dive
davanum
 
PDF
me-and-python
Jan Stavel
 
PPTX
Functional programing jargon
Remo Jansen
 
PDF
Modern Java Development
Peerapat Asoktummarungsri
 
PPTX
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
PDF
Swift, a quick overview
Julian Król
 
PPTX
Testing of React JS app
Aleks Zinevych
 
Advanced Javascript
Dhruvin Shah
 
Functional Programming in Java
Premanand Chandrasekaran
 
Object oriented javascript
Garrison Locke
 
Continuations in scala (incomplete version)
Fuqiang Wang
 
Exploring Kotlin language basics for Android App development
Jayaprakash R
 
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
jQuery (intermediate)
Madhukar Anand
 
Functional programming principles and Java 8
Dragos Balan
 
JavaScript Fundamentals
Lasantha Bandara
 
Model with actors and implement with Akka
Ngoc Dao
 
Advanced Object Oriented JavaScript (prototype, closure, scope, design patterns)
raja kvk
 
TypeScript Overview
Aniruddha Chakrabarti
 
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
 
Oslo.versioned objects - Deep Dive
davanum
 
me-and-python
Jan Stavel
 
Functional programing jargon
Remo Jansen
 
Modern Java Development
Peerapat Asoktummarungsri
 
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
Swift, a quick overview
Julian Król
 
Testing of React JS app
Aleks Zinevych
 

Viewers also liked (6)

PPTX
What is scala
Piyush Katariya
 
PDF
JavaScript and DOM
Jussi Pohjolainen
 
PDF
JavaScript for Enterprise Applications
Piyush Katariya
 
PPT
JavaScript & Dom Manipulation
Mohammed Arif
 
PDF
Javascript and DOM
Brian Moschel
 
PPTX
An Introduction to the DOM
Mindy McAdams
 
What is scala
Piyush Katariya
 
JavaScript and DOM
Jussi Pohjolainen
 
JavaScript for Enterprise Applications
Piyush Katariya
 
JavaScript & Dom Manipulation
Mohammed Arif
 
Javascript and DOM
Brian Moschel
 
An Introduction to the DOM
Mindy McAdams
 
Ad

Similar to JavaScript (without DOM) (20)

PPTX
Awesomeness of JavaScript…almost
Quinton Sheppard
 
PDF
JavaScript: Patterns, Part 1
Chris Farrell
 
PPTX
ES6: Features + Rails
Santosh Wadghule
 
PDF
Rediscovering JavaScript: The Language Behind The Libraries
Simon Willison
 
KEY
Javascript tid-bits
David Atchley
 
KEY
JavaScript Growing Up
David Padbury
 
PDF
JavaScript Primer
Daniel Cousineau
 
PPT
JavaScript - Programming Languages course
yoavrubin
 
KEY
Exciting JavaScript - Part I
Eugene Lazutkin
 
PPTX
Advanced JavaScript
Zsolt Mészárovics
 
PPTX
11. session 11 functions and objects
Phúc Đỗ
 
PDF
ES6 - Next Generation Javascript
RameshNair6
 
PPT
Java Script Patterns
Allan Huang
 
PPT
25-functions.ppt
JyothiAmpally
 
PDF
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
PPTX
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
PDF
Javascript the New Parts v2
Federico Galassi
 
PDF
Scalable JavaScript
Ynon Perek
 
PPTX
Functional Programming in Javascript - IL Tech Talks week
yoavrubin
 
PDF
Say It With Javascript
Giovanni Scerra ☃
 
Awesomeness of JavaScript…almost
Quinton Sheppard
 
JavaScript: Patterns, Part 1
Chris Farrell
 
ES6: Features + Rails
Santosh Wadghule
 
Rediscovering JavaScript: The Language Behind The Libraries
Simon Willison
 
Javascript tid-bits
David Atchley
 
JavaScript Growing Up
David Padbury
 
JavaScript Primer
Daniel Cousineau
 
JavaScript - Programming Languages course
yoavrubin
 
Exciting JavaScript - Part I
Eugene Lazutkin
 
Advanced JavaScript
Zsolt Mészárovics
 
11. session 11 functions and objects
Phúc Đỗ
 
ES6 - Next Generation Javascript
RameshNair6
 
Java Script Patterns
Allan Huang
 
25-functions.ppt
JyothiAmpally
 
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
Javascript the New Parts v2
Federico Galassi
 
Scalable JavaScript
Ynon Perek
 
Functional Programming in Javascript - IL Tech Talks week
yoavrubin
 
Say It With Javascript
Giovanni Scerra ☃
 
Ad

More from Piyush Katariya (6)

PDF
Concurrency, Parallelism And IO
Piyush Katariya
 
PDF
Handling the growth of data
Piyush Katariya
 
PDF
Expression problem
Piyush Katariya
 
PDF
My inspirations and learned lessons
Piyush Katariya
 
PPTX
Rise of the Single Page Application
Piyush Katariya
 
PPTX
Introduction to Web Application Clustering
Piyush Katariya
 
Concurrency, Parallelism And IO
Piyush Katariya
 
Handling the growth of data
Piyush Katariya
 
Expression problem
Piyush Katariya
 
My inspirations and learned lessons
Piyush Katariya
 
Rise of the Single Page Application
Piyush Katariya
 
Introduction to Web Application Clustering
Piyush Katariya
 

Recently uploaded (20)

PDF
July Patch Tuesday
Ivanti
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
July Patch Tuesday
Ivanti
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 

JavaScript (without DOM)

  • 2.  First appearance in Netscape Navigator 2.0 in Sept 1995  Microsoft launched JScript as alternative in Aug 1996  Request for Standardization in Nov 1996  ECMA-262 specification in June 1997  Third edition in Dec 1999  Fifth edition in Dec 2009  Sixth edition expected by mid 2015  Today – Preferred programming language of the Web  Not limited to Web Browsers – node.js, ringo.js
  • 3.  Imperative, Object Oriented, Functional, and Prototypal  Dynamic  Single Threaded  Asynchronous, Event Driven  Sandboxed  God created the earth in 7 days. Brendan Eich created JavaScript in 10 days. 
  • 4. UI Thread Browser DOM Work Queue JS Engine Layout Engine Operating System C P U G P U
  • 5.  Never mind ! Everything is a var  var stringVariable = “JavaScript”  var booleanVariable = true  var intVariable = 10  var floatVariable = 10.5  Numbers are treated as float  null !== undefined  Falsy values – 0 (zero), NaN, ‘’, false, null, undefined
  • 6.  Object is collection of key–value pairs with optional hidden link to prototype object  Instantiation  var obj = new Object()  var objShortHand = { }  var objWithInitialValue = { “property” : “value”}  var objTheUltimate = Object.create(parentObject)  Access  obj.property  obj[“property”]  obj.nestedObj.property  obj[“nestedObj”].property  Runtime Mutation  obj.newProperty = “value”  obj.nestedObj = { “property” : “value”}  obj.nestedObj[“property”] = “different value”  Deletion  delete obj.property
  • 7.  Callable first class citizen  Linked to Function.prototype linked to Object.prototype  Can be passed and return as object  No Overloading  Definitions  var add = new Function(‘a’, ‘b’, ‘return a + b’);  var add = function (a, b) { return a + b; };  function add(a, b) { return a + b;}  Blessed with  this  arguments
  • 8. Function invocation (Direct Invocation)  add(1, 2)  isPalindrome(‘madam’)  this bound to global object !!!
  • 9. Method Invocation  Method => a function stored as property of object  this bound to method holder object var obj = { value : 0, //zero increment : function (inc) { this.value += typeof inc === ‘number’ ? inc : 1; } } obj.increment(1) ; // 1 obj.increment(2); // 3
  • 10. var someClass = function (property) { this.publicProperty = property; var privateVariable = “value”; this.publicMethod = function () { //code for method definition }; var privateMethod = function () { //code for method definition }; // return this; }
  • 11. Constructor Invocation  JS way of creating objects OO style var EmployeeClass = function (firstName, designation) { this.firstName = firstName; this.designation = designation; }; EmployeeClass.protoype.getFirstName = function () { return this.firstName;}; EmployeeClass.protoype.getDesignation = function () { return this.designation;}; var employee = new EmployeeClass(‘Piyush’, ‘Software Dev’) employee.getFirstName(); // ‘Piyush’ employee.getDesignation(); // ‘Software Dev’
  • 12. Apply Invocation (Reflective Invocation) var argsArray = [2, 3]; var sum = add.apply( null, argsArray); // 3 //OR var sum = add.call( null, 2, 3); //3 var firstName = EmployeeClass.getFirstName.apply(empObject); //OR var firstName = EmployeeClass.getFirstName.call(empObject);
  • 13.  Facilitates late(runtime) binding Function.prototype.bind = function (objToBind) { var self = this; return function () { var argArr = Array.prototype.slice.call(arguments); return self.apply(objToBind || null, argArr); }; }
  • 14.  Use when some of the inputs to function are always known Function.prototype.curry = function () { var initArgs = Array.prototype.slice.call(arguments); var self = this; return function () { var args = Array.prototype.slice.call(arguments); return self.apply(null, initArgs.concat(args)) } };
  • 15.  Never ever ever make use for loop again while operating on Arrays !  var names = [‘Piyush’, ‘James’, ‘Shwetha’, ‘Kapil’, ‘Praveen’, ‘Matt’, ‘Nag’, ‘Shabina’]  map => conversion function which get executed for every element  names.map(function(name){ return name.substring(0, 3); })  filter => logical condition function to consider only sub set of array  names.filter(function(name){ return name.indexOf(‘i’) > 0; })  reduce => compute result by considering each element with optional initial value  names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; })  names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }, ‘ Madhu’)  sort => comparison function to order the element in custom fashion  names.sort()  names.sort(function(name1, name2) { return name1 < name2; })  forEach => alternative to for loop to just focus on operation  names.forEach(function(name) { console.log(name); })  every => does every element in array satisfies the logical condition  some => does at least one element in array satisfies the logical condition  reduceRight => same as reduce but iterates array from last to first index
  • 16.  It’s a LIVE chain
  • 17.  Avoid global variables and functions  Use parseInt(obj, 10)  eval function is evil !  ‘===’ and ‘!== ’ for comparison  Never use void, becoz its operator !  Always prefix var with variable declaration  Use semicolons everywhere at EOL  Never augment built in objects  Consider underscore.js as default choice  Use JSLint for code inspection  And of course above all, Do Meditate ! 
  • 18. var clockOnce = setTimeout(fn, delay)  Execute function <fn> after <delay> milliseconds  Queue function <fn> to execute after <delay> milliseconds  Used to divide highly computationally complex(CPU bound) tasks  Cancellation => clearTimeout(clockOnce) var timer = setInterval(fn, delay)  Execute function <fn> after every <delay> milliseconds  Queue function <fn> to execute after every <delay> milliseconds  Cancellation => clearInterval(timer)
  • 19. var counterModule = ( function( ) { var privateCount = 0; function changeBy(val) { return privateCount += val; } return { increment : function() { changeBy(1); }, decrement : function() { changeBy(-1); }, currentValue : function() { return privateCount; } }; } ) ( );
  • 20. var Singleton = ( function () { var instance; function createInstance() { var object = new Object("I am the only instance"); return object; } return { getInstance : function () { if (! instance) { instance = createInstance(); } return instance; } }; })();
  • 21.  Why ?  Higher level abstraction and constructs  Type safety  Declarative - More focus on WHAT need to be done instead of HOW  Stick to one worthy language for end to end application stack  Usage  Code in your own language  Compile it into JS (either offline or in browser itself )  Run in browser  Support debugging for original language in browser using source maps  Options  CoffeeScript  TypeScript  Dart  ScalaJS  PythonJS  ClojureScript  More at this link
  • 22.  Process of removing all unnecessary characters and modifying source code spread over single or multiple file without changing its functionality  Advantages  Single artifact for whole application  Reduced size of code  Obfuscated code  Applicable for JS and CSS
  • 23.  JavaScript : The Good Parts by Douglas Crockford  JavaScript Pattern by Stoyan Stefanov  Wikipedia.org
  • 24.  jQuery - for DOM access and manipulation  Node.js – server side JS  Require.js - async module loader  Backbone.js – client side MVC  Angular.js – powerpack SPA framework