Difference between revisions of "WebFund 2013F Lecture 4"
Jump to navigation
Jump to search
(Created page with "Audio from the lecture given on September 18, 2013 will be available soon after class. Readings: Chapters 3 (Objects) and 4 (Functions), ''JavaScript: The Good Parts'' ...") |
(→Topics) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Audio from the lecture given on September 18, 2013 | Audio from the lecture given on September 18, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec04-18Sep2013.m4a here] | ||
Readings | ==Readings== | ||
* Chapters 3 (Objects) and 4 (Functions), ''JavaScript: The Good Parts'' | |||
==Topics== | |||
* Array versus dot notation for objects | * Array versus dot notation for objects | ||
* scoping | * scoping | ||
Line 20: | Line 21: | ||
* functions as objects | * functions as objects | ||
* function literals | * function literals | ||
* | |||
** | ==notes== | ||
** | |||
** | September 18 | ||
** | |||
* | * empty object | ||
* | ** foo={ }; | ||
* | * delegation : waiting for another object to do your work | ||
** similar to inheritance in java | |||
* delegation of objects happens in the prototype property | |||
* every object has a default prototype | |||
* everything delegates to object | |||
** similar to inherits but there are no classes and no hierarchy | |||
* object reflection | |||
** look inside an object and see what's there | |||
* for loops in javascript | |||
for(p in foo){ | |||
} | |||
** similar to a for each loop in java | |||
** will iterate through all the properties in foo, no fixed order | |||
** [[DO NOT DO THIS]] | |||
** follows prototype and looks at the properties in the entire prototype chain | |||
* typeof(foo.x) can tell you if x is | |||
** number | |||
** string | |||
** object | |||
* foo.hasOwnProperty('x') returns true or false | |||
* for loops that don't care about the prototype chain | |||
** create an array that has the properties you want and iterate through them | |||
* vector array uses [] instead of {} | |||
** ie. [5, hello, etc]; | |||
** use an array because they're ordered! | |||
* foo.x is equivalent to foo["x"] | |||
** objects are like associative arrays where you index by letters/strings | |||
==FUNCTIONS== | |||
* functions are an object | |||
* scope! | |||
** scoping rules : visibility of identifiers | |||
*** variables | |||
*** constants | |||
*** functions | |||
*** objects etc | |||
===2 ways for scoping=== | |||
* dynamic | |||
** symbols you can access and the meaning of them depends on what code has been run before hand | |||
** x=7; | |||
** x=3; | |||
** x is what part came first | |||
** global variables are inheritently global scoped | |||
* lexical/textual | |||
*** variables it can see depends on what is around it | |||
*** idea of local variables | |||
* javascript has a very important global score | |||
* create a namespace to keep global script from getting too big | |||
** but doesn't exist in a standardized form | |||
* global abatement - minimize what you write in the global scope | |||
* local variable, say var in front of it | |||
* no block scope in javascript, function scope is not block scope | |||
f = function(a){ | |||
return function(b)[ | |||
return a+b; | |||
} | |||
}; // data encapsulation | |||
g = t(5); g(7); returns 12 |
Latest revision as of 17:33, 8 November 2013
Audio from the lecture given on September 18, 2013 is available here
Readings
- Chapters 3 (Objects) and 4 (Functions), JavaScript: The Good Parts
Topics
- Array versus dot notation for objects
- scoping
- var declarations
- prototype and delegation
- empty objects
- object literals
- reflection
- typeof
- hasOwnProperty
- for and object properties
- delete
- global abatement
- functions as objects
- function literals
notes
September 18
- empty object
- foo={ };
- delegation : waiting for another object to do your work
- similar to inheritance in java
- delegation of objects happens in the prototype property
- every object has a default prototype
- everything delegates to object
- similar to inherits but there are no classes and no hierarchy
- object reflection
- look inside an object and see what's there
- for loops in javascript
for(p in foo){ }
- similar to a for each loop in java
- will iterate through all the properties in foo, no fixed order
- DO NOT DO THIS
- follows prototype and looks at the properties in the entire prototype chain
- typeof(foo.x) can tell you if x is
- number
- string
- object
- foo.hasOwnProperty('x') returns true or false
- for loops that don't care about the prototype chain
- create an array that has the properties you want and iterate through them
- vector array uses [] instead of {}
- ie. [5, hello, etc];
- use an array because they're ordered!
- foo.x is equivalent to foo["x"]
- objects are like associative arrays where you index by letters/strings
FUNCTIONS
- functions are an object
- scope!
- scoping rules : visibility of identifiers
- variables
- constants
- functions
- objects etc
- scoping rules : visibility of identifiers
2 ways for scoping
- dynamic
- symbols you can access and the meaning of them depends on what code has been run before hand
- x=7;
- x=3;
- x is what part came first
- global variables are inheritently global scoped
- lexical/textual
- variables it can see depends on what is around it
- idea of local variables
- javascript has a very important global score
- create a namespace to keep global script from getting too big
- but doesn't exist in a standardized form
- global abatement - minimize what you write in the global scope
- local variable, say var in front of it
- no block scope in javascript, function scope is not block scope
f = function(a){ return function(b)[ return a+b; } }; // data encapsulation g = t(5); g(7); returns 12