在javascript 王者归来中,p597命名空间
cn = (function(){
function Point(x , y){
this.x = x;
this.y = y;
}
return {Point:Point} //疑问1
})();
var p = new cn.Point(2,3);
alert(p.x);
alert(p.y);
实际上疑问1就是接口
分开理解 外面的function(){} 闭包的接口实际上就是return {}这里,通过这里来实现接口
如果我们想更多的接口,可以在return {接口1, 接口2,.....}
以上很容易理解,因为cn就是闭包的返回值,实际上cn = {接口1,接口2.....}
以上就是闭包的接口和命名空间同时使用
下面来看下
闭包里面的接口
书p580
(function(){ var innerX = 10 , innerY = 20;
outerObj = {x:innerX , y:innerY};
})();
我们可以直接在外面调用
outerObj.x 或outerObj.y;
为什么可以这样使用呢。实际上outerObj这个变量在外面定义了。如果在闭包中没有var 定义一个变量,默认在外面
var outerObj ={};
(function(){ var innerX = 10 , innerY = 20;
outerObj = {x:innerX , y:innerY};
})();
在外面调用
outerObj.x;
outerObj.y;