私はこのコードを持っています:
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見た目は同じですが、私の質問は、それらの間に何か違いがあるかどうかです。
私はこのコードを持っています:
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見た目は同じですが、私の質問は、それらの間に何か違いがあるかどうかです。
newコンストラクター関数からインスタンス化するのに適しています。つまり、基本的には、コンストラクター内で参照されるすべてのデータを含む新しいオブジェクトが形成されます。this
を使用せずnewに、グローバルオブジェクトthisを参照し、グローバル名前空間(ES3)を上書きするか、(ES5 strict)になります。undefined
ここでの特定のスニペットでは、それでもから新しいオブジェクトを返すため、問題ではありませんTest()。test1これは常に使用され、とに割り当てられtest2ます。
うーん..あなたはそれを最初の方法で行うことができますか?
オブジェクトのnew インスタンスを宣言しているため、「新規」という用語を使用します。変数ではありません。