javascript modules and patterns telerik software academy

25
JavaScript Modules and Patterns Telerik Software Academy http://academy.telerik.com

Post on 04-Jan-2016

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: JavaScript Modules and Patterns Telerik Software Academy

JavaScript Modules and Patterns

Telerik Software Academyhttp://academy.telerik.com

Page 2: JavaScript Modules and Patterns Telerik Software Academy

2

Table of Contents

1. Public/Private fields in JavaScript

2. Module pattern

3. Revealing module pattern

4. Revealing prototype pattern

5. Singleton pattern

Page 3: JavaScript Modules and Patterns Telerik Software Academy

Public/Private fieldsUsing the function scope

Page 4: JavaScript Modules and Patterns Telerik Software Academy

4

Public/Private Fields

• Each variable is defined:• In the global scope (Public)• In a function scope (Private)

var global = 5;

function myFunction() { var private = global;

function innerFunction(){ var innerPrivate = private; }}

Page 5: JavaScript Modules and Patterns Telerik Software Academy

Public/Private fieldsLive Demo

Page 6: JavaScript Modules and Patterns Telerik Software Academy

The Module PatternHide members

Page 7: JavaScript Modules and Patterns Telerik Software Academy

7

Pros and Cons

• Pros:• “Modularize” code into re-useable objects• Variables/functions not in global namespace• Expose only public members

• Cons: • Not easy to extend • Some complain about debugging

Page 8: JavaScript Modules and Patterns Telerik Software Academy

8

Module Pattern: Structure

var module = (function() {//private variables//private functions

return {//public memberssomeFunc: function() {…},anotherFunc: function() {…}

};}());

Page 9: JavaScript Modules and Patterns Telerik Software Academy

9

Module Pattern: Summary

• Module pattern provides encapsulation of variables and functions

• Provides a way to add visibility (public versus private) to members

• Each object instance creates new copies of functions in memory

Page 10: JavaScript Modules and Patterns Telerik Software Academy

Module PatternLive Demo

Page 11: JavaScript Modules and Patterns Telerik Software Academy

The Revealing Module PatternReveal the most interesting

members

Page 12: JavaScript Modules and Patterns Telerik Software Academy

12

Revealing Module Pattern: Pros and Cons

• Pros: • “Modularize” code into re-useable objects

• Variables/functions taken out of global namespace

• Expose only visible members

• "Cleaner" way to expose members

• Easy to change members privacy

• Cons: • Not easy to extend

• Some complain about debugging

• Hard to mock hidden objects for testing

Page 13: JavaScript Modules and Patterns Telerik Software Academy

13

Revealing Module Pattern: Structure

var module = (function() {//hidden variables //hidden functions

return { //visible members

someFunc: referenceToFunctionanotherFunc:

referenceToOtherFunction};

}());

Page 14: JavaScript Modules and Patterns Telerik Software Academy

14

Revealing Module Pattern: Summary

• Module pattern provides encapsulation of variables and functions

• Provides a way to add visibility (public versus private) to members

• Extending objects can be difficult since no prototyping is used

Page 15: JavaScript Modules and Patterns Telerik Software Academy

Revealing Module PatternLive Demo

Page 16: JavaScript Modules and Patterns Telerik Software Academy

The Revealing Prototype Pattern

Reveal the most interesting members (again)

Page 17: JavaScript Modules and Patterns Telerik Software Academy

17

Revealing Prototype Pattern:Pros and Cons

• Pros: • “Modularize” code into re-useable objects • Variables/functions taken out of global namespace • Expose only public members • Functions are loaded into memory once• Extensible

• Cons: • "this" can be tricky• Constructor is separated from prototype

Page 18: JavaScript Modules and Patterns Telerik Software Academy

18

Revealing Prototype Pattern:Structure

var Constructor = function () {//constructor defined here

}

Constructor.prototype = (function() {//hidden variables //hidden functions

return { //exposed members

someFunc: pointerToSomeFuncanotherFunc: pointerToAnotherFunc

};}());

Page 19: JavaScript Modules and Patterns Telerik Software Academy

19

Revealing Prototype Pattern:Summary

• Module pattern provides encapsulation of variables and functions

• Provides a way to add visibility (exposed versus hidden) to members

• Provides extension capabilities

Page 20: JavaScript Modules and Patterns Telerik Software Academy

Revealing Prototype PatternLive Demo

Page 21: JavaScript Modules and Patterns Telerik Software Academy

Singleton Pattern

One object to rule them all!

Page 22: JavaScript Modules and Patterns Telerik Software Academy

22

Singleton Pattern: Structure

var module = function() { var instance, getInstance; return { getInstance: function(){ if(!instance){ instance = new Instance(); } return instance; } };}();

Page 23: JavaScript Modules and Patterns Telerik Software Academy

Singleton PatternLive Demo

Page 24: JavaScript Modules and Patterns Telerik Software Academy

Augmenting ModulesLive Demo

Page 25: JavaScript Modules and Patterns Telerik Software Academy

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

JavaScript Modules and Patterns

http://academy.telerik.com