将脚本放在单独的模块中

时间:2013-12-15 09:03:01

标签: javascript

请帮助修复script

我添加了一些按钮功能。然后尝试将所有js-code放在一个单独的范围内。也就是说,把它放到设计中

var testModule = (function () {
 
}) (this);

结果代码已停止工作

3 个答案:

答案 0 :(得分:0)

问题是您没有从函数中返回任何内容,因此testModule的值为undefined

然后您尝试访问与testModule.observable相同的undefined.observable,这是一个错误。

你还需要在你的小提琴中选择jQuery。 - 由OP修复,见评论问题。)

答案 1 :(得分:0)

你忘了传递这个论点!

观看此片段:

var foo = 'foo';


(function(fooAliasToBeUsedInsideTheClosure){
    console.log(fooAliasToBeUsedInsideTheClosure);
}(foo))


(function(){
    console.log(fooAliasToBeUsedInsideTheClosure);
}(foo))

首次尝试在控制台中打印'foo'正常工作。但第二次失败,因为在闭包中没有与foo var匹配的参数。然后它在其代码中考虑foo = undefined。

在你的例子中,这种情况特别极端,因为你强迫asign'this = undefined'。

所以,试着在第一次实例时修复它。

答案 2 :(得分:0)

您需要在函数结束时返回:

var testModule = (function () {


   return {
              observerable : observerable
          };
}) (this);