an introduction to object oriented javascript

20
Object Oriented JavaScript An Introduction - Manoj Nama

Upload: to-the-new-technology

Post on 16-Jan-2017

1.283 views

Category:

Education


1 download

TRANSCRIPT

Page 1: An introduction to Object Oriented JavaScript

Object Oriented JavaScriptAn Introduction - Manoj Nama

Page 2: An introduction to Object Oriented JavaScript

Object Oriented JavaScriptAn Introduction - Manoj Nama

Page 3: An introduction to Object Oriented JavaScript

Agenda● Functions● Objects● Prototypal Inheritance● Callbacks & Closures● Async Programming● Some Exercises

Page 4: An introduction to Object Oriented JavaScript

Functions● Functions are first class members of JavaScript● They can be used just like variables

function someFunction(arg1, arg2) {return arg1 + arg2;

}

Page 5: An introduction to Object Oriented JavaScript

Functions● JavaScript has Function scope, i.e only Functions

define the scope and nothing else● A function has access to all the variables and

methods in the scope in which it is defined

Example

Page 6: An introduction to Object Oriented JavaScript

Call & Apply● Call/Apply both are used to call a function with

the ability to change the this reference● Only difference between the two is syntax

○ Call takes arguments as a listfunctionName.call(obj, arg1, arg2);

○ Apply takes an array of ArgumentsfunctionName.apply(obj, [arg1, arg2]);

Example

Page 7: An introduction to Object Oriented JavaScript

Objects● In JavaScript almost everything is an Object● Multiple ways to create an Object

○ Object Constructor var obj = new Object() ○ Object Literal var obj = {}○ Inbuilt Method var obj = Object.create()

○ Constructor function var obj = new Person()

Example

Page 8: An introduction to Object Oriented JavaScript

Constructor Function● Constructor function is similar to the notation of a Class

function Person(name, age) {this.name = name;this.age = age;

}

Example

Page 9: An introduction to Object Oriented JavaScript

Prototypes● Objects inheriting from other Objects● Prototype is an object used to construct new

objects● we can assign properties to prototypes to inherit

them

Prototypes are used with Constructor Functions

Page 10: An introduction to Object Oriented JavaScript

Prototypal Chain● All Objects inherit from Object class● If certain property is not available on current

object, it is looked on prototype, then Parent’s prototype and so on … until the property or null is found

o → o.prototype → … → Object.prototype → null

Page 11: An introduction to Object Oriented JavaScript

Inheritance● Inheriting properties and methods● Prototypes are used for inheritance● Two ways

○ Inherit from Constructor Functions (Class)○ Inherit from another Objects

Example

Page 12: An introduction to Object Oriented JavaScript

Callbacks● Callbacks are basically functions passed on as

arguments to another operation● This allows us to cope with Asynchronous nature of

JavaScript● We don’t have to block the browser for results

Example

Page 13: An introduction to Object Oriented JavaScript

Closures● Very important due to Async nature of JavaScript● Closures are basically functions which capture the

surrounding scope● The variables remain bound to the scope even

when the initiator returns

Example

Page 14: An introduction to Object Oriented JavaScript

Async Programming● Callbacks really help in maintaining the sanity in

Asynchronous operations● But, what if there are huge no of async operations

depending on each other, nested inside each other..

● This is referred to as Callback hell..

Page 15: An introduction to Object Oriented JavaScript

Callback HellasyncOp1(function(result) {

asyncOp2(function(result1) {asyncOp3(function(result2) {

...

asyncOp1476(function(result3) {//phew! got my

result});

});});});

Page 16: An introduction to Object Oriented JavaScript

Async Flow Control● Callback hell can be avoided by controlling the

program flow● Async.JS is an excellent library to control the

callback flow● Promises Pattern can be very useful with Async

Operations

Page 17: An introduction to Object Oriented JavaScript

Async Flow Control Example

async.parallel([function(callback) {

callback(null, “data”);},function(callback) {

callback(null, “data2”);}

],//optional callback function(err, results) {

//results: [“data”, “data2”]});

async.waterfall([function(callback) {

callback(null, “data”);

},function(arg1,

callback) {//arg1: “data”callback(null,

“data2”);}

],//optional callback function(err, result) {

//result: “data2”});

Page 18: An introduction to Object Oriented JavaScript

Tips & Tricks● use + to convert expressions to a number

○ +new Date() gives Timestamp● use !! to convert any expression to a boolean● Append array to another array

○ a = [1,2,3]; b= [4,5,6]○ Array.prototype.push.apply(a,b)

Page 19: An introduction to Object Oriented JavaScript

Exercises• Add a loop() method to the Prototype of Array• Implement basic Inheritance with an example of

Employee• print numbers 1..5, such that every number is

printed after 500ms

Page 20: An introduction to Object Oriented JavaScript

Links to Examples• Functions: http://jsfiddle.net/manoj_nama/GE59y/• Call & Apply: http://jsfiddle.net/manoj_nama/6tLx5/1/• Objects: http://jsfiddle.net/manoj_nama/Ma9EQ/• Constructor Function: http://jsfiddle.net/manoj_nama/3Ly4V/1/

• Inheritance: http://jsfiddle.net/manoj_nama/YLUHw/1/• Callbacks: http://jsfiddle.net/manoj_nama/9vqEf/1/• Closures: http://jsfiddle.net/manoj_nama/H6nE2/1/• Promises: http://jsfiddle.net/manoj_nama/R6ZV2/