-1

モジュール全体を具現化し、グローバル プロパティを設定して特定のパブリック API パーツを公開する匿名関数を使用するために、java-script で module-via-anonymous-function-pattern を使用しています。

このようなグローバル プロパティを設定するいくつかの方法を試しましたが、以下に掲載されている 2 番目の方法は失敗します。

window.foo = (function() {
  function bar() { this.hello = "world" }
  return new bar();
})();

> foo.hello
"world" // OK

対。

(function() {
  window.foo2 = new bar( this.hello = "world" );
  function bar() {}
})();

> foo2.hello
undefined // Fail

2 番目の方法で適切なバー オブジェクトが作成されないのはなぜですか?

4

3 に答える 3

5

2番目の方法:

(function() {
  window.foo2 = new bar( this.hello = "world" );
  function bar() {}
})();

this、、windowおよび

new bar(this.hello = "world") 

に等しい

window.hello = "world";
new bar(window.hello);

こちらで確認できます

そして、私はあなたが欲しいものは次のとおりだと思います:

(function() {
  window.foo2 = new bar( "world" );
  function bar(a) {this.hello = a}
})();

ここを参照してください

于 2013-03-13T07:51:12.573 に答える
1

問題は、オブジェクトの構築を使用する方法です。この2つの方法を試してください。

window.foo2 = new bar();
function bar() {this.hello = "world";};

また

window.foo2 = new bar("world");
function bar(x) {this.hello = x;};
于 2013-03-13T07:50:17.947 に答える
1

以下のコードを試してみてください

(function() {
  function bar() { this.hello = "world"; };
  window.foo2 = new bar();
})();
于 2013-03-13T07:47:15.917 に答える