var obj = function() {
this.a = function(arg){alert(arg);}
this.b = function(arg){alert(arg+1);}
}
var fn = new obj;
fn.a('TEST');
两种方法:
实例化函数为对象
闭包返回内部值
解释为什么不能直接访问函数内的变量或内嵌函数
function foo(){
var var1=18;
function baz(){
console.log(var1);
}
}
baz(); // ReferenceError
foo.var1; // TypeError
foo.baz(); // TypeError
函数具有隔离内部值,即保护内部私有值或函数的能力。所不直接或间接访问。
方法一:实例化函数对象,略....。
方法二:闭包
function foo(){
var val1=18;
function baz(){
console.log(val1);
}
return { //返回值对象实质上是一个 我们模块的公有API
varl1:varl1,
baz:baz
}
}
var m=foo();
m.var1; // ok
m.baz(); // ok
可以用闭包