私はJavaScriptでコードブロックを作成します。Javascriptの継承無限ループ
function Shape() {}
Shape.prototype.name = "Shape";
Shape.prototype.toString = function() {
result = [];
if(this.constructor.uber) {
result[result.length] = this.constructor.uber.toString();
}
result[result.length] = this.name;
return result.join(', ');
}
function twoDShape() {};
twoDShape.prototype = new Shape();
twoDShape.prototype.constructor = twoDShape;
twoDShape.uber = twoDShape.prototype;
twoDShape.name = "twoD Shape";
var a = new twoDShape();
console.log(a.toString());
私はなぜ知らないが、私はそれを実行すると、Firefoxがフリーズです。私はそれを理解する時間を試してきました。私の推測では、コード内に無限ループがあるはずですが、if条件のどこかに住んでいますが、私はそれを見つけられませんでした。誰かがこの頭痛から私を助けることができますか? ありがとうございました!
正確に言えば、上記の私の答えに従って、toStringメソッドでループしています。同じコンストラクタは、なぜこれが起こっているのか(メソッド自体を呼び出す)、実際にはループの原因ではありません。 – sync