hot*_*zen -1 javascript constructor global object
我在java脚本中使用module-via-anonymous-function-pattern来创建一个匿名函数,该函数体现整个模块并通过设置全局属性公开特定的公共API部分.
我尝试了几种设置这种全局属性的方法,下面发布的第二种方法失败了:
window.foo = (function() {
function bar() { this.hello = "world" }
return new bar();
})();
> foo.hello
"world" // OK
Run Code Online (Sandbox Code Playgroud)
与
(function() {
window.foo2 = new bar( this.hello = "world" );
function bar() {}
})();
> foo2.hello
undefined // Fail
Run Code Online (Sandbox Code Playgroud)
为什么第二种方法没有创建一个合适的条形对象?
在你的第二种方法中:
(function() {
window.foo2 = new bar( this.hello = "world" );
function bar() {}
})();
Run Code Online (Sandbox Code Playgroud)
this是window,和
new bar(this.hello = "world")
Run Code Online (Sandbox Code Playgroud)
等于
window.hello = "world";
new bar(window.hello);
Run Code Online (Sandbox Code Playgroud)
你可以在这里查看
我想你想要的是:
(function() {
window.foo2 = new bar( "world" );
function bar(a) {this.hello = a}
})();
Run Code Online (Sandbox Code Playgroud)
看到这里