私は通常、コードで無名関数アプローチを使用します。
(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 オブジェクトを追加しているようです。違いがわかりません。
これら 2 つのアプローチの違いと、それぞれの長所と短所を教えてください。