我在java脚本中使用module-via-anonymous-function-pattern来创建一个匿名函数,该函数体现整个模块,并通过设置全局属性公开特定的公共API部分。
我尝试了几种设置这种全局属性的方法,下面发布的第二种方法失败了:
window.foo = (function() {
function bar() { this.hello = "world" }
return new bar();
})();
> foo.hello
"world" // OK
VS
(function() {
window.foo2 = new bar( this.hello = "world" );
function bar() {}
})();
> foo2.hello
undefined // Fail
为什么第二种方法没有创建合适的条形对象?
答案 0 :(得分:5)
在你的第二种方法中:
(function() {
window.foo2 = new bar( this.hello = "world" );
function bar() {}
})();
this
是window
和
new bar(this.hello = "world")
等于
window.hello = "world";
new bar(window.hello);
您可以查看here
我认为你想要的是:
(function() {
window.foo2 = new bar( "world" );
function bar(a) {this.hello = a}
})();
请参阅here
答案 1 :(得分:1)
你应该尝试以下代码
(function() {
function bar() { this.hello = "world"; };
window.foo2 = new bar();
})();
答案 2 :(得分:1)
问题是使用构造对象的方法。尝试这两种方式。
window.foo2 = new bar();
function bar() {this.hello = "world";};
或
window.foo2 = new bar("world");
function bar(x) {this.hello = x;};