JavaScript kalıtım sonsuz döngü

oy
18

Javascript kod bloğunu oluşturmak:

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());

Ben neden bilmiyorum ama onu çalıştırdığınızda, firefox donma olduğunu. Ben bunu anlamaya saat çalışıyorum. Ve benim tahminim benim kodda sonsuz döngüler olacak ve eğer durumda bir yerde yaşıyor, ama ben bunu bulamadık gerektiğidir. Birisi bu baş ağrısı çıkmama yardımcı olabilir. Teşekkür ederim!

Oluştur 19/10/2012 saat 07:33
kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
2

Aradığınızda this.constructor.uber.toString()gelen Shape.prototype.toString, uberolan twoDShape.prototypebir olan Shapeve böylece toStringyöntemdir Shape.prototype.toStringtekrar.

Ve bu sonsuz bir döngüye neden olur.

Cevap 19/10/2012 saat 07:50
kaynak kullanıcı

oy
0

kuyu, testin adil bir miktar denedikten sonra, sonunda bir ipucu. Ve bu yukarıda kendi soru için cevap olduğuna inanıyoruz. Yazma: ateş a.constructor.uber.constructor === TwoDShape'ten, doğru döndürür. sonsuz döngüye neden Ve bu yüzden.

Cevap 19/10/2012 saat 08:07
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more