新しいキーワードを使用して、または使用せずに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を参照して実行されます。this2番目のnewオブジェクトは、を使用して新しい空のオブジェクトを作成し、そのオブジェクトはthis関数内にあります。