创建全局API对象

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)

为什么第二种方法没有创建一个合适的条形对象?

pkt*_*yue 5

在你的第二种方法中:

(function() {
  window.foo2 = new bar( this.hello = "world" );
  function bar() {}
})();
Run Code Online (Sandbox Code Playgroud)

thiswindow,和

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)

看到这里