【发布时间】:2015-04-22 16:15:09
【问题描述】:
我通常在我的代码中使用匿名函数方法:
(function($,NS){
window[NS] = $.extend((window[NS] || {}), {
global : 31,
init : function(){
var $d = $(document);
$.on('click', 'a', $.proxy(this.clickHandler, this));
},
clickHandler : function(e){
console.log('etc');
}
});
}(jQuery, "AAABBBCCC"));
但是,我最近偶然发现了一种更简单的方法,可以将给定的命名空间添加到窗口对象并保护全局命名空间:
var AAABBBCCC = window.AAABBBCCC || {
global : 31,
init : function(){
var $d = $(document);
$.on('click', 'a', $.proxy(this.clickHandler, this));
},
clickHandler : function(e){
console.log('etc');
}
};
我测试了这两种方法,看起来它们都向窗口对象添加了 AAABBBCCC 对象。我看不出有什么不同。
您能否向我解释一下这两种方法之间的区别,以及每种方法可能的优点/缺点?
【问题讨论】:
-
第二种情况没有扩展。
标签: javascript jquery javascript-namespaces