WebFund 2013F Lecture 4

From Soma-notes
Jump to navigation Jump to search

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

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