3

新しいキーワードを使用して、または使用せずにjavascript関数を呼び出すことには違いがありますか?たとえば、私が関数を持っていた場合:

function computer(){
  this.hardDrive = "big";
  this.processor = "fast";
}

そして私はそれを2つの異なる方法で呼びます:

var hp = computer();
var hp = new computer();

2つの関数呼び出しの違いは何でしょうか?

4

2 に答える 2

8

がないnew場合thisは、グローバルオブジェクトを参照し、関数から返されるオブジェクトは参照しません。

コードを実行すると、最初のコードは。にhpなりundefined、2番目のコードはになります[object Object]hardDriveさらに、明らかな理由から、最初のプロパティにはまたはのプロパティはありませんprocessorが、2番目のプロパティにはあります。

最初の例では、2つのプロパティがwindowオブジェクトに追加されています。

于 2012-04-26T01:19:48.010 に答える
1

最初のものは、を使用せずに、ウィンドウオブジェクトnewを参照して実行されます。this2番目のnewオブジェクトは、を使用して新しい空のオブジェクトを作成し、そのオブジェクトはthis関数内にあります。

于 2012-04-26T01:20:54.873 に答える