作者flyingIdea (飞翔的想法)
看板Ajax
标题[问题] javascript namespace的问题
时间Wed Jan 1 00:51:03 2014
引用
http://openhome.cc/Gossip/JavaScript/Namespace.html
的文章
----开始----
在设计程式库时,若有名称想避免别人占用干扰,则有个惯用手法。例如,若不想被别人
占用干扰global这个名称,则可以如下:
(function(global) {
var global.openhome = global.openhome || {};
...
})(this);
也许你的匿名函式 初始中,不确定会用在哪个环境中,因此想使用global这个名称作为
全域变数,一方面也怕别人干扰global这个名称,使用以上手法,若是在浏览器 中,真
正的全域名称this所参考的物件会传入函式作为参数global参考的对象,而global为区域
变数,所以不受外部其它程式库所定义的外部变数干扰。
----结束----
这一段看不太懂@@~
请问一下~当这一段被呼叫後
里面的变数(例如openhome)我要怎麽取用?
是用this.openhome吗?
我想要用这种方式建立函式库一直建立不起来....
麻烦众版友帮解答我的问题QQ~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.39.73.18
1F:→ mmis1000:并不限定只能用this阿 01/01 01:14
2F:→ s540421:var global.openhome = global.openhome || {}; 这是错的 01/01 01:38
3F:→ s540421:要改成global.openhome = global.openhome || {}; 01/01 01:39
4F:→ s540421:变数名称只允许字母和底线,不允许dot 01/01 01:39
5F:→ s540421:省去这错误不看,这段的意思是将最外层的this变数传入 01/01 01:40
6F:→ s540421:function内作为名为global的变数,可以当作alias 01/01 01:41
7F:→ s540421:之後要存取openhome要使用global.openhome来存取 01/01 01:41
8F:→ s540421:这边比较重要的是root scope的this是代表window物件 01/01 01:42
9F:→ s540421:这行之後,要在root scope存取openhome的话要使用 01/01 01:49
10F:→ s540421:openhome, this.openhome, window.openhome其中一种 01/01 01:50