我试图用JS模块模式。但是当我在控制台中调用HM.init()
时,它会显示undefined
。这就像this.carousel
根本不存在。那是为什么?
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);.
非常感谢
答案 0 :(得分:4)
它打印undefined
的原因是因为HM.init
没有返回任何内容(没有return
语句,因此它默认返回undefined
)。
要么在调用return
之前添加this.carousel.init()
,请执行以下操作:
...
HM.init = function(){
return this.carousel.init();
}
...
...或者您想在console.log
函数中使用HM.carousel.init
,如果您想将'initialise HM'打印到控制台:
...
HM.carousel = {
init: function(){
return 'initialise HM';
}
}
...
(返回值本身不是一个好的调试工具,所以用console.log
打印它可能更有意义。)