JavaScript/Notes/: Difference between revisions
(25 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
== Introduction == | == Introduction == | ||
''' | '''Overview:''' JavaScript Language Fundamentals and design patterns for web programming. See [[JavaScript]]. | ||
'''Teacher''': Garrett Smith | '''Teacher:''' [[User:Garrett|Garrett Smith]] | ||
'''Resources''' | '''Resources''' | ||
[[Web Development Resources]] | [[Web Development Resources]] | ||
'''Reference Conventions''': | |||
Each section points to specific sections of the pertinent specification for any given subject matter, and for ECMAScript, with a linked section marker. For example ECMAScript defines the standard for JavaScript ([http://ecma-international.org/ecma-262/5.1/#sec-1 § 1]). | |||
All references used in this class are linked from the [[Web Development Resources]] page. | |||
== [[JavaScript/Notes/Debugging|Debugging]] == | == [[JavaScript/Notes/Debugging|Debugging]] == | ||
Browsers provide debuggers that can be launched from a breakpoint, the application's menu, or the debugger keyword in the script. | Browsers provide debuggers that can be launched from a breakpoint, the application's menu, keyboard shortcut, or the debugger keyword in the script. | ||
== [[JavaScript/Notes/ParameterObject|Parameter Object]] == | == [[JavaScript/Notes/ParameterObject|Parameter Object]] == | ||
Passing around lists of parameters? Typechecking arguments? Stop doing that. Here's how to make your code clearer and less error-prone. | Passing around lists of parameters? Typechecking arguments? Stop doing that. Here's how to make your code clearer and less error-prone. | ||
== [[JavaScript/Notes/TypeConversion|Type Conversion]] == | == [[JavaScript/Notes/TypeConversion|Type Conversion]] == | ||
There are five primitive types in JavaScript: Null, Undefined, Boolean, String, Number. Various operations in JavaScript require conversion to and from primitive values. | There are five primitive types in JavaScript: Null, Undefined, Boolean, String, Number. Various operations in JavaScript require conversion to and from primitive values. | ||
== [[JavaScript/Notes/ClassnameSwap|ClassName Swap]] == | == [[JavaScript/Notes/ClassnameSwap|ClassName Swap]] == | ||
Event Delegation and the Cascade. | Event Delegation and the Cascade. | ||
== [[JavaScript/Notes/Function|Functions]] == | == [[JavaScript/Notes/Function|Functions]] == | ||
Functions are callable objects with an internal <nowiki>[[Scope]]</nowiki> property. Learn how to call functions and pass functions to other functions, where they can be later called. | Functions are callable objects with an internal <nowiki>[[Scope]]</nowiki> property. Learn how to call functions and pass functions to other functions, where they can be later called. | ||
== [[JavaScript/Notes/Array|Array Methods added to EcmaScript 5]]== | == [[JavaScript/Notes/Array|Array Methods added to EcmaScript 5]]== | ||
Line 30: | Line 39: | ||
'''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | '''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | ||
== [[JavaScript/Notes/Prototype|Prototype]] == | == [[JavaScript/Notes/Prototype|Prototype]] == | ||
Line 37: | Line 47: | ||
'''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | '''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | ||
== [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]== | |||
This class covers closures. | |||
'''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | |||
== [[JavaScript/Notes/CustomEvents|Custom Events]] == | == [[JavaScript/Notes/CustomEvents|Custom Events]] == | ||
Line 45: | Line 62: | ||
'''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | '''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | ||
== [[JavaScript/Notes/Singleton|Singleton]] == | == [[JavaScript/Notes/Singleton|Singleton]] == | ||
Singleton with information hiding in function scope. | Singleton with information hiding in function scope. | ||
'''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | |||
'''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | '''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | ||
== [[JavaScript/Notes/IBD|Interface-Based Design]] == | == [[JavaScript/Notes/IBD|Interface-Based Design]] == | ||
Two | |||
'''Prerequisite:''' [[JavaScript/Notes/CustomEvents|Custom Events]]. | |||
Two Event Registry interface objects that share a similar signature, each with a different implementation detail suited for a specific task. The Devil's in the details -- encapsulate them! | |||
=== [[JavaScript/Notes/EventNotificationSystem|Event Notification System]]=== | === [[JavaScript/Notes/EventNotificationSystem|Event Notification System]]=== | ||
Line 64: | Line 84: | ||
'''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | '''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | ||
=== [[JavaScript/Notes/DomEvents|DOM Events Adapter]]=== | === [[JavaScript/Notes/DomEvents|DOM Events Adapter]]=== | ||
Line 77: | Line 98: | ||
'''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | '''Prerequisite:''' [[JavaScript/Notes/Function|Functions]]. | ||
'''Prerequisite:''' [[JavaScript/Notes/ParameterObject|Parameter Object]] | '''Prerequisite:''' [[JavaScript/Notes/ParameterObject|Parameter Object]]. | ||
'''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | '''Prerequisite:''' [[JavaScript/Notes/Scope|Scope Chain and Identifier Resolution]]. | ||
== [[JavaScript/Notes/PrivateProxy|PrivateProxy]] == | |||
The private proxy exposes a public interface object. This public interface object delegates some of its responsibility to a private instance. | |||
'''Prerequisite:''' [[JavaScript/Notes/Factory|Factory]]. | |||
== [[JavaScript/Notes/Testing|Testing]]== | |||
Unit testing with YUI Test. | |||
== [[JavaScript/Notes/Promises|Promises]] == | |||
ECMAScript 6 Promises. |
Revision as of 14:23, 16 May 2014
You down with OOP? - Yeah you know me!
Introduction
Overview: JavaScript Language Fundamentals and design patterns for web programming. See JavaScript.
Teacher: Garrett Smith
Resources Web Development Resources
Reference Conventions:
Each section points to specific sections of the pertinent specification for any given subject matter, and for ECMAScript, with a linked section marker. For example ECMAScript defines the standard for JavaScript (§ 1).
All references used in this class are linked from the Web Development Resources page.
Debugging
Browsers provide debuggers that can be launched from a breakpoint, the application's menu, keyboard shortcut, or the debugger keyword in the script.
Parameter Object
Passing around lists of parameters? Typechecking arguments? Stop doing that. Here's how to make your code clearer and less error-prone.
Type Conversion
There are five primitive types in JavaScript: Null, Undefined, Boolean, String, Number. Various operations in JavaScript require conversion to and from primitive values.
ClassName Swap
Event Delegation and the Cascade.
Functions
Functions are callable objects with an internal [[Scope]] property. Learn how to call functions and pass functions to other functions, where they can be later called.
Array Methods added to EcmaScript 5
Sort, map, filter, and more.
Prerequisite: Functions.
Prototype
The prototype chain is used for reading property resolution.
User-defined functions can be used to construct new objects. Objects have, on their prototype chain, the constructor's prototype.
Prerequisite: Functions.
Scope Chain and Identifier Resolution
This class covers closures.
Prerequisite: Functions.
Custom Events
Fire custom events from your own user-defined objects.
Prerequisite: Functions.
Prerequisite: Scope Chain and Identifier Resolution.
Singleton
Singleton with information hiding in function scope.
Prerequisite: Functions.
Prerequisite: Scope Chain and Identifier Resolution.
Interface-Based Design
Prerequisite: Custom Events.
Two Event Registry interface objects that share a similar signature, each with a different implementation detail suited for a specific task. The Devil's in the details -- encapsulate them!
Event Notification System
An abstract system for event notification.
Prerequisite: Functions.
Prerequisite: Scope Chain and Identifier Resolution.
DOM Events Adapter
An system for DOM event notification, designed to handle delegation and specific event models.
Prerequisite: Functions.
Prerequisite: Scope Chain and Identifier Resolution.
Factory
The Factory pattern, the Decorator pattern, newApply, and the holy grail: Abstract Factory.
Prerequisite: Functions.
Prerequisite: Parameter Object.
Prerequisite: Scope Chain and Identifier Resolution.
PrivateProxy
The private proxy exposes a public interface object. This public interface object delegates some of its responsibility to a private instance.
Prerequisite: Factory.
Testing
Unit testing with YUI Test.
Promises
ECMAScript 6 Promises.