201506231015_《Javascript权威指南(第六版)——作为命名空间的函数、闭包、 》(P181-193)
1. 作为命名空间的函数。 形如: var someFn = (function(){var a = 0;return function f(){// ...};}());
2. 闭包。
闭包内无法直接访问外部函数的参数,除非将外部的实参列给一个变量存储以来。例如:var outerArguments = arguments;
3. 函数的属性,方法,构造函数
a.
arguments.length; (期望传入的实参个数)
arguments.callee.lenth;(实际传入的实参个数)
b. prototype属性
构造函数会从原型对象上继承属性和方法;
c. call()和apply()
第一个参数是要“要调用函数的母对象”
形如:函数.call(对象); 函数.apply(对象);
4. bind();——将函数绑定至整个对象;(返回一个函数对象)
例如:
function square(x) {return x*x}; var obj = {x : 2}; var newObj = square.bind(obj,obj.x); console.log(newObj()); //4 注意括号,因 为“square.bind(obj,obj.x);” 是个function类型!!
5. toString();
6. Function();构造函数
a. 传入任意数量的字符串实参;
b. var fn = new Function("x","y","return x + y;"); fn(2,3); //5
c. var scope = "global"; function constructFunction(){var scope = "local";return new Function("return scope") //无法获取local};
7.