新しいキーワードを使用して、または使用せずにjavascript関数を呼び出すことには違いがありますか?たとえば、私が関数を持っていた場合:
function computer(){
this.hardDrive = "big";
this.processor = "fast";
}
そして私はそれを2つの異なる方法で呼びます:
var hp = computer();
var hp = new computer();
2つの関数呼び出しの違いは何でしょうか?
新しいキーワードを使用して、または使用せずにjavascript関数を呼び出すことには違いがありますか?たとえば、私が関数を持っていた場合:
function computer(){
this.hardDrive = "big";
this.processor = "fast";
}
そして私はそれを2つの異なる方法で呼びます:
var hp = computer();
var hp = new computer();
2つの関数呼び出しの違いは何でしょうか?
がないnew
場合this
は、グローバルオブジェクトを参照し、関数から返されるオブジェクトは参照しません。
コードを実行すると、最初のコードは。にhp
なりundefined
、2番目のコードはになります[object Object]
。hardDrive
さらに、明らかな理由から、最初のプロパティにはまたはのプロパティはありませんprocessor
が、2番目のプロパティにはあります。
最初の例では、2つのプロパティがwindow
オブジェクトに追加されています。
最初のものは、を使用せずに、ウィンドウオブジェクトnew
を参照して実行されます。this
2番目のnew
オブジェクトは、を使用して新しい空のオブジェクトを作成し、そのオブジェクトはthis
関数内にあります。