日期:2014-05-16  浏览次数:20451 次

请教一个关于命名空间理解的问题,是不是就给全局变量和函数变成了某对象的属性和方法了?
比如一段很简单的代码:

var a=1
function f1(){
   this.n=10  
}
f1.prototype.a=1
var obj=new f1()
alert(obj.n)
alert(obj.a)


如果它的命名空间是x,是要对下面的上面的代码进行这样的改造吗?

var x={a:1,f1:function(){ this.n=10 }}
x.f1.prototype.a=1
x.obj=new x.f1()
alert(x.obj.n)
alert(x.obj.a)


或者

var x={}
x.a=1
x.f1=function (){
   this.n=10  
}
x.f1.prototype.a=1
x.obj=new x.f1()
alert(x.obj.n)
alert(x.obj.a)

那些要求命名空间的公司,代码都是这样写的吗?


------解决方案--------------------
我饺子是介样滴。
还真有不写分号的啊。
------解决方案--------------------
差不多都这样吧。。
------解决方案--------------------
这是ExtJs的命名空间函数,从window开始建立

Ext = {
 namespace : function(){
            var o, d;
            Ext.each(arguments, function(v) {
                d = v.split(".");
                o = window[d[0]] = window[d[0]] 
------解决方案--------------------
 {};
                Ext.each(d.slice(1), function(v2){
                    o = o[v2] = o[v2] 
------解决方案--------------------
 {};
                });
            });
            return o;
        }
}