Working fiddle兩種模式,使用IIFE和直接歸因。
使用var
將定義設置爲private,並且您的函數不返回任何內容。使用此:
PROMO.Base = {
Init: function() {
},
WireEvents: function() {
};
};
您正在與IIFE(立即執行的函數表達式)包裝的定義。所以你的PROMO.Base
對象將被賦值爲(function(){//blabla})();
返回的值。但是您的功能沒有return
聲明。默認情況下,它將返回undefined
。
哪個方式您PROMO.Base
會undefined
,你會得到這樣的:
Cannot call method 'Init' of undefined
如果你真的想要的IIFE:
var PROMO = PROMO || {};
// NEVER use _self = this inside static functions, it's very dangerous.
// Can also be very misleading, since the this object doesn't point to the same reference.
// It can be easily changed with Function.prototype.call and Function.prototype.apply
PROMO.Base = (function() {
_PROMO = {
Init : function() {
document.body.innerHTML += "itworks";
},
WireEvents : function() {
//wire up events
}
}
return _PROMO;
}());
PROMO.Base.Init();
更新
的更好,更容易模式是簡單地將功能分配給PROMO.Base
。 Dully注意到你不應該使用靜態函數,而只能使用構造函數。所以如果某些東西不是要實例化的,不要稱之爲Init
,它應該是init
。這是公約。
var PROMO = {};
PROMO.Base = {};
PROMO.Base.init = function() {
console.log("this works");
};
PROMO.Base.wireEvents = function() {
console.log("this is a static function too");
};
你從來沒有真正分配存儲在'Init'的功能'PROMO.Base.Init' – 2013-05-07 19:35:46