12

次の関数があるとします。

var A = function() {
   var label = "hello";
   return {
      getLabel: function() { return label; }
   }
};

次の間に違いはありますか:

var a = A();

var a = new A();

?

注意: ここでは、JavaScript の 'new' キーワードが何であるかを尋ねているのではなく、この特定の例でどのように動作するかを尋ねています。

4

1 に答える 1

8

あなたの特定のインスタンスでは、いいえ、違いはありません。

いずれにせよ、関数は自己定義された Objectを返します。キーワードを使用して関数を呼び出すことにより ECMAscriptはnew自動的に新しいオブジェクトを作成し ( と プロパティでいくつかの魔法を実行prototypeするconstructorとともに) 、.thisfunction (-constructor)

繰り返しますreturn { }が、その関数での呼び出しは、常にそのオブジェクト参照を正確に返します。

于 2013-02-07T09:10:11.210 に答える