Oo java script class construction

66
OO JavaScript Class Construction Using The Prototype JavaScript Framework July 8th 2008 Ken Collins http://metaskills.net / 1 Thursday, July 10, 2008

description

 

Transcript of Oo java script class construction

Page 1: Oo java script class construction

OO JavaScript Class Construction

Using The Prototype JavaScript Framework

July 8th 2008Ken Collins http://metaskills.net/

1Thursday, July 10, 2008

Page 2: Oo java script class construction

Topic Overview

2Thursday, July 10, 2008

Page 3: Oo java script class construction

Topic Overview

• Basic JavaScript Refresher

2Thursday, July 10, 2008

Page 4: Oo java script class construction

Topic Overview

• Basic JavaScript Refresher

• The Ruby Object Model

2Thursday, July 10, 2008

Page 5: Oo java script class construction

Topic Overview

• Basic JavaScript Refresher

• The Ruby Object Model

• JavaScript Code Usage/Organization Types

2Thursday, July 10, 2008

Page 6: Oo java script class construction

Topic Overview

• Basic JavaScript Refresher

• The Ruby Object Model

• JavaScript Code Usage/Organization Types

• Prototype Class Construction

2Thursday, July 10, 2008

Page 7: Oo java script class construction

Topic Overview

• Basic JavaScript Refresher

• The Ruby Object Model

• JavaScript Code Usage/Organization Types

• Prototype Class Construction

• Review HomeMarks v2.0

2Thursday, July 10, 2008

Page 8: Oo java script class construction

Basic JavaScript Refresher

3Thursday, July 10, 2008

Page 9: Oo java script class construction

Basic JavaScript Refresher

4Thursday, July 10, 2008

Page 10: Oo java script class construction

Basic JavaScript Refresher

• JavaScript is a prototype-based language.

4Thursday, July 10, 2008

Page 11: Oo java script class construction

Prototype-based programming is a style of object-oriented programming in which classes are not present, and behavior

reuse (known as inheritance in class-based languages) is performed via a process of cloning existing objects that

serve as prototypes. This model can also be known as class-less, prototype-oriented or instance-based programming.

http://en.wikipedia.org/wiki/Prototype-based_programming

5Thursday, July 10, 2008

Page 12: Oo java script class construction

Basic JavaScript Refresher

• JavaScript is a prototype-based language.

6Thursday, July 10, 2008

Page 13: Oo java script class construction

Basic JavaScript Refresher

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

6Thursday, July 10, 2008

Page 14: Oo java script class construction

JavaScript Object Model

7Thursday, July 10, 2008

Page 15: Oo java script class construction

JavaScript Object Model

7Thursday, July 10, 2008

Page 16: Oo java script class construction

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

Basic JavaScript Refresher

8Thursday, July 10, 2008

Page 17: Oo java script class construction

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

• Get firebug and use console.log() liberally!

Basic JavaScript Refresher

8Thursday, July 10, 2008

Page 19: Oo java script class construction

10Thursday, July 10, 2008

Page 20: Oo java script class construction

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

• Get firebug and use console.log() liberally!

Basic JavaScript Refresher

11Thursday, July 10, 2008

Page 21: Oo java script class construction

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

• Get firebug and use console.log() liberally!

• Remember, that functions are objects too. With non-strict argument options.

Basic JavaScript Refresher

11Thursday, July 10, 2008

Page 22: Oo java script class construction

12Thursday, July 10, 2008

Page 23: Oo java script class construction

• JavaScript is a prototype-based language.

• JavaScript objects are best thought about as hashes. New values and even functions can just be tacked on.

• Get firebug and use console.log() liberally!

• Remember, that functions are objects too. With non-strict argument options.

• Knowing what “this” is can save you lots of debugging and headaches. (another topic)

Basic JavaScript Refresher

13Thursday, July 10, 2008

Page 24: Oo java script class construction

The Ruby Object ModelKnowing Ruby’s object model will help you with Prototype’s class construction and how it mimics

inheritance and mixins.

14Thursday, July 10, 2008

Page 25: Oo java script class construction

Inheritance in Ruby

15Thursday, July 10, 2008

Page 26: Oo java script class construction

Module Mixins in Ruby

16Thursday, July 10, 2008

Page 27: Oo java script class construction

Prototyping in Ruby

17Thursday, July 10, 2008

Page 29: Oo java script class construction

JavaScript Code Usage/Organization

Types

19Thursday, July 10, 2008

Page 30: Oo java script class construction

JavaScript Code Usage/Organization Types

20Thursday, July 10, 2008

Page 31: Oo java script class construction

• Oh so uncool inline events.

• Procedural functions at the window level.

JavaScript Code Usage/Organization Types

20Thursday, July 10, 2008

Page 32: Oo java script class construction

Inheritance in Ruby

21Thursday, July 10, 2008

Page 33: Oo java script class construction

• Oh so uncool inline events.

• Procedural functions at the window level.

JavaScript Code Usage/Organization Types

22Thursday, July 10, 2008

Page 34: Oo java script class construction

• Oh so uncool inline events.

• Procedural functions at the window level.

• Namespaced modules. Essentially just a hash of stateless functions.

JavaScript Code Usage/Organization Types

22Thursday, July 10, 2008

Page 35: Oo java script class construction

Inheritance in Ruby

23Thursday, July 10, 2008

Page 36: Oo java script class construction

• Oh so uncool inline events.

• Procedural functions at the window level.

• Namespaced modules. Essentially just a hash of stateless functions.

JavaScript Code Usage/Organization Types

24Thursday, July 10, 2008

Page 37: Oo java script class construction

• Oh so uncool inline events.

• Procedural functions at the window level.

• Namespaced modules. Essentially just a hash of stateless functions.

• GO FULL OO IN JAVASCRIPT!

JavaScript Code Usage/Organization Types

24Thursday, July 10, 2008

Page 38: Oo java script class construction

Do not think about DOM elements that have events attached to them,

but instead think in terms of JavaScript objects that are instances of classes

modeled in your domain which know about:

25Thursday, July 10, 2008

Page 39: Oo java script class construction

• The DOM element(s) they represent.

Do not think about DOM elements that have events attached to them,

but instead think in terms of JavaScript objects that are instances of classes

modeled in your domain which know about:

25Thursday, July 10, 2008

Page 40: Oo java script class construction

• The DOM element(s) they represent.

• The behavior needed to change the page.

Do not think about DOM elements that have events attached to them,

but instead think in terms of JavaScript objects that are instances of classes

modeled in your domain which know about:

25Thursday, July 10, 2008

Page 41: Oo java script class construction

• The DOM element(s) they represent.

• The behavior needed to change the page.

• The state changes to report to the application server. (with ajax)

Do not think about DOM elements that have events attached to them,

but instead think in terms of JavaScript objects that are instances of classes

modeled in your domain which know about:

25Thursday, July 10, 2008

Page 42: Oo java script class construction

PrototypeClass

Construction

26Thursday, July 10, 2008

Page 43: Oo java script class construction

Prototype Class Construction

27Thursday, July 10, 2008

Page 44: Oo java script class construction

• All examples from prototypejs.org

Prototype Class Construction

27Thursday, July 10, 2008

Page 45: Oo java script class construction

• All examples from prototypejs.org

• Get very familiar with the whole APIhttp://www.prototypejs.org/api

Prototype Class Construction

27Thursday, July 10, 2008

Page 46: Oo java script class construction

• All examples from prototypejs.org

• Get very familiar with the whole APIhttp://www.prototypejs.org/api

• You must learn! Tips and tricks.http://www.prototypejs.org/learn

Prototype Class Construction

27Thursday, July 10, 2008

Page 47: Oo java script class construction

• All examples from prototypejs.org

• Get very familiar with the whole APIhttp://www.prototypejs.org/api

• You must learn! Tips and tricks.http://www.prototypejs.org/learn

• Focus on classes and inheritance.http://www.prototypejs.org/learn/class-inheritance

Prototype Class Construction

27Thursday, July 10, 2008

Page 48: Oo java script class construction

Basic Class Constructor

28Thursday, July 10, 2008

Page 50: Oo java script class construction

Review

30Thursday, July 10, 2008

Page 51: Oo java script class construction

HomeMarks v2.0 Review

31Thursday, July 10, 2008

Page 52: Oo java script class construction

• Total rewrite for rails 2.1

HomeMarks v2.0 Review

31Thursday, July 10, 2008

Page 53: Oo java script class construction

• Total rewrite for rails 2.1

• Completely Restful. App focuses solely on the data’s state change. Like an web service.

HomeMarks v2.0 Review

31Thursday, July 10, 2008

Page 54: Oo java script class construction

• Total rewrite for rails 2.1

• Completely Restful. App focuses solely on the data’s state change. Like an web service.

• Articles on MetaSkills.net

HomeMarks v2.0 Review

31Thursday, July 10, 2008

Page 57: Oo java script class construction

• Total rewrite for rails 2.1

• Completely Restful. App focuses solely on the data’s state change. Like an web service.

• Articles on MetaSkills.net

HomeMarks v2.0 Review

34Thursday, July 10, 2008

Page 58: Oo java script class construction

• Total rewrite for rails 2.1

• Completely Restful. App focuses solely on the data’s state change. Like an web service.

• Articles on MetaSkills.net

• Focus on these class files in the Github project.

HomeMarks v2.0 Review

34Thursday, July 10, 2008

Page 60: Oo java script class construction

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 61: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 62: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

• All domain classes like column, box, etc inherit from the HomeMarksApp class. This gives object from these sub classes access to things like 4 things every object needs to know:

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 63: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

• All domain classes like column, box, etc inherit from the HomeMarksApp class. This gives object from these sub classes access to things like 4 things every object needs to know:

Shared knowledge of DOM elements common to all.

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 64: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

• All domain classes like column, box, etc inherit from the HomeMarksApp class. This gives object from these sub classes access to things like 4 things every object needs to know:

Shared knowledge of DOM elements common to all.

How to communicate to the server with AJAX. This allows the app to have one AJAX observer constructor.

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 65: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

• All domain classes like column, box, etc inherit from the HomeMarksApp class. This gives object from these sub classes access to things like 4 things every object needs to know:

Shared knowledge of DOM elements common to all.

How to communicate to the server with AJAX. This allows the app to have one AJAX observer constructor.

A this.flash() function to send dashboard messages.

HomeMarks Follow Up

36Thursday, July 10, 2008

Page 66: Oo java script class construction

• JS classes split into two virtual domains. A cluster of them are for the site, others for the app. Focus on the application cluster. Includes base, app, page, column, box...

• All domain classes like column, box, etc inherit from the HomeMarksApp class. This gives object from these sub classes access to things like 4 things every object needs to know:

Shared knowledge of DOM elements common to all.

How to communicate to the server with AJAX. This allows the app to have one AJAX observer constructor.

A this.flash() function to send dashboard messages.

Access to this.modal() for any fancy modal displays.

HomeMarks Follow Up

36Thursday, July 10, 2008