私はこのスーパーシンプルなJSオブジェクトを使いこなしていました。これを実行すると、「最大呼び出しスタックサイズエラー」が出るまで、obj.toStringが繰り返し呼び出されます。しかし、obj.typeの 'this'を 'this.name'に戻すと、すべて正常に動作します。私は通常、これだけを返すわけではないことを認識していますが、なぜ私はそれをループに巻き込んでいますか?ループを引き起こすJavaScriptプロトタイプで 'this'を返すのはなぜですか
var Dog = function(name){
this.name = name;
}
Dog.prototype.type = function(){
return this;
}
Dog.prototype.toString = function(){
//console.log(this.type())
return "Dog's name: " + this.type();
}
var spot = new Dog('spot');
console.log(spot.toString());
' "犬の名前:" ので+ this.typeは()')( 'this.typeを呼び出して終了のtoString(。 ) '(すなわち'this.toString()')を呼び出し、 'toString()'の呼び出しは 'this.type()'を再帰的に呼び出します。 –
OK、私は今理解していると思います。通常、 'this'を呼び出すと、組み込みの 'toString()'メソッドが呼び出され、[object Object]のようなものが返されます。しかし、私はそれを定義して以来、私のメソッドを呼び出します。ありがとう、それは今意味があります。 – user2879070