0

私はこのコードを持っています:

function Test() {
  var i=0;
  return {
    foo : function() { console.log(++i); },
    bar : function(a) { i=i+a;console.log(i)} 
  }
}
var test1 = Test();
var test2 = new Test();

test1test2見た目は同じですが、私の質問は、それらの間に何か違いがあるかどうかです。

4

2 に答える 2

2

newコンストラクター関数からインスタンス化するのに適しています。つまり、基本的には、コンストラクター内で参照されるすべてのデータを含む新しいオブジェクトが形成されます。this

を使用せずnewに、グローバルオブジェクトthisを参照し、グローバル名前空間(ES3)を上書きするか、(ES5 strict)になります。undefined


ここでの特定のスニペットでは、それでもから新しいオブジェクトを返すため、問題ではありませんTest()test1これは常に使用され、とに割り当てられtest2ます。

于 2012-12-13T11:04:41.027 に答える
1

うーん..あなたはそれを最初の方法で行うことができますか?

オブジェクトのnew インスタンスを宣言しているため、「新規」という用語を使用します。変数ではありません。

于 2012-12-13T11:04:34.917 に答える