2
我试图在JS中使用模块模式。但是当我在控制台中呼叫HM.init()
时,它表示undefined
。这就像this.carousel
根本不存在。这是为什么?在javascript中扩展模块模式中的模块
JS:
(function(window, $){
var HM = (function (HM) {
HM.init = function(){
this.carousel.init();
}
return HM;
})(HM || {});
window.HM = HM;
$(function(){
console.log(HM.init()); // this doesn't work
});
})(window, jQuery);
//Extending module (this is supposed to be in another file)
(function(window, HM, $){
HM.carousel = {
init: function(){
return 'initialise HM';
}
}
})(window, HM, jQuery);.
非常感谢
感谢Jonas的回复。我更新了代码,但它仍然无效。检查代码。 – Shaoz 2012-03-20 16:18:01
正确;问题是'HM.init'不会返回任何东西。 '在HM.init'内部返回this.carousel.init()'应该起作用,至少它对我有用。用'console.log'代替我的意思是你可以把'return'初始化HM'改成例如'console.log('初始化HM')'(假设它只是调试输出,而你实际上并不想返回它)。对不起:P – FireFly 2012-03-20 16:21:25
再次感谢,但在这个项目中,这个代码是所有其他模块初始化的核心,所以每个模块的返回都有点麻烦。例如,一个旋转木马模块将被创建,以及一个标签,手风琴等......因此,为他们每个人做回报都很奇怪,除非我当然无能为力。 – Shaoz 2012-03-20 16:31:03