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

javascript中的window.me=me的问题
JScript code


(function() 
     {
          var me = {
                       ....里面都是个关于 me 的属性和方法之类的
                   }
                
          window.me = me;
     }
)();



我就想问了,这个 window.me = me; 是什么意思,有什么作用? 而且在另外的javascript文件的代码里面可以直接写 me.DOM={} ,但是就像上面的代码 var me={ 这里面没有定义DOM },为什么可以直接写 me.DOM={} 呢? 所以我就想之前的 window.me = me 和后面可以直接写 me.DOM={} 两者之间是不是有什么联系?

------解决方案--------------------
这是种沙箱模式,使得
var me = {} 
这种声明可以在一个不受污染的环境下创建出来

window.me = me
这句就使得在外面可以直接调用 me
因为在 window 层里声明的变量即视为 window 自己的变量
比如
var a = 1;
再用 window.a 取的就是1
也因为这种特性所以就要用沙箱来防止 me 这个对象在创建后被别的同名变量顶掉了引用
------解决方案--------------------
呃,倒是不知道这个就称之为沙箱模式。
按我自己的理解方式的话,它应该是可以分为两部份

首先因为外部是一个自执行的匿名函数:(function(){})();,这样内部的所有函数、对象和变量就可以受到保护
其次,因为在匿名函数中定义的外部是无法进行访问的,所以使用window.me=me。使得其在外部可以访问

有点伪命名空间的意思。因为内部定义时,还可以使用别名的