QA@IT

JavaScript の new Dog は new Dog() と何か違うのでしょうか

2522 PV

コンストラクタ関数 Dog に () をつけていない次のコードが問題なく動きます。JavaScript の new Dog は new Dog() と何か違うのでしょうか。

 function Dog() {this.say = function () {console.log("wan");};}
 d = new Dog;
 d.say(); //=> wan

以下の資料に載っているのかもしれないのですが、読み取れませんでした。

回答

同じです。

MDN の JavaScript リファレンス から引用(強調は引用者):

The constructor function foo is called with the specified arguments and this bound to the newly created object. new foo is equivalent to new foo(), i.e. if no argument list is specified, foo is called without arguments.

編集 履歴 (1)
  • わかりました。ありがとうございました。 -
  • あ、ちなみに、 http://es5.github.com/#x15.3.2.1 これは Function というクラスのコンストラクタの呼び出し方なので、この質問の意図とは離れていると思います。 -
  • たしかに 15.3.2.1 new Function (p1, p2, … , pn, body) は検討違いでした。ご指摘ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。