在javascript中扩展模块模式中的模块
我试图将模块模式与JS结合使用。但是,当我在控制台中调用在javascript中扩展模块模式中的模块,javascript,design-patterns,Javascript,Design Patterns,我试图将模块模式与JS结合使用。但是,当我在控制台中调用HM.init()时,它会显示未定义。就像是这样。旋转木马根本不存在。为什么呢 JS: 非常感谢它打印未定义的原因是HM.init不返回任何内容(noreturn语句,因此它默认返回未定义) 您可以在调用this.carousel.init()之前添加return,如下所示: ... HM.init = function(){ return this.carousel.init(); } ... …或者您想在HM.carousel
HM.init()
时,它会显示未定义。就像是这样。旋转木马根本不存在。为什么呢
JS:
非常感谢它打印未定义
的原因是HM.init
不返回任何内容(noreturn
语句,因此它默认返回未定义
)
您可以在调用this.carousel.init()
之前添加return
,如下所示:
...
HM.init = function(){
return this.carousel.init();
}
...
…或者您想在HM.carousel.init
函数中使用console.log
,如果您想在控制台上打印“initialise HM”:
...
HM.carousel = {
init: function(){
return 'initialise HM';
}
}
...
(返回值本身不是一个好的调试工具,因此使用console.log
打印它可能更有意义)它打印undefined
的原因是HM.init
不返回任何内容(noreturn
语句,因此它默认返回undefined
)
您可以在调用this.carousel.init()
之前添加return
,如下所示:
...
HM.init = function(){
return this.carousel.init();
}
...
…或者您想在HM.carousel.init
函数中使用console.log
,如果您想在控制台上打印“initialise HM”:
...
HM.carousel = {
init: function(){
return 'initialise HM';
}
}
...
(返回值本身不是一个好的调试工具,因此使用console.log
打印它可能更有意义)感谢Jonas的回复。我已经更新了代码,但仍然不起作用。查看代码。对;问题是HM.init
不返回任何内容返回这个.carousel.init()
内部HM.init
应该可以工作,至少对我来说是这样。通过替换为console.log
,我的意思是您可以将return'initialise HM
更改为例如console.log('initialise HM')
(假设它只是调试输出,您实际上不想返回该输出)。很抱歉让您感到困惑:请再说一遍PThanks,但是在这个项目中,这个代码是所有其他模块初始化的核心,所以为每个模块返回都有点混乱。例如,将创建旋转木马模块以及选项卡、手风琴等。。。所以为每一个返回都很奇怪,除非我不知道。因此,您可能需要console.log
来进行调试。代码本身可以工作,但您认为它不能,因为它打印的是未定义的
。打印未定义
的原因很简单,因为调用的函数没有返回任何内容。您返回的字符串('initialise HM')将被丢弃,因为它没有存储在任何地方。感谢Jonas的回复。我已经更新了代码,但仍然不起作用。查看代码。对;问题是HM.init
不返回任何内容返回这个.carousel.init()
内部HM.init
应该可以工作,至少对我来说是这样。通过替换为console.log
,我的意思是您可以将return'initialise HM
更改为例如console.log('initialise HM')
(假设它只是调试输出,您实际上不想返回该输出)。很抱歉让您感到困惑:请再说一遍PThanks,但是在这个项目中,这个代码是所有其他模块初始化的核心,所以为每个模块返回都有点混乱。例如,将创建旋转木马模块以及选项卡、手风琴等。。。所以为每一个返回都很奇怪,除非我不知道。因此,您可能需要console.log
来进行调试。代码本身可以工作,但您认为它不能,因为它打印的是未定义的
。打印未定义的原因很简单,因为调用的函数没有返回任何内容。您返回的字符串('initialise HM')被丢弃,因为它没有存储在任何地方。