Javascript erfenis oneindige lus

stemmen
18

Ik maak dit blok code in 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());

Ik weet niet waarom, maar wanneer ik het in werking, firefox is bevriezen. Ik heb geprobeerd uur om het te achterhalen. En ik denk, moet er een oneindige loop in mijn code en het leeft ergens in de if conditie, maar ik heb het niet te weten. Kan iemand me helpen uit deze hoofdpijn. Dank je!

De vraag is gesteld op 19/10/2012 om 07:33
user
In andere talen...                            


2 antwoorden

stemmen
2

Als u belt this.constructor.uber.toString()uit Shape.prototype.toString, uberis twoDShape.prototypedat is een Shape, en zo dat toStringmethode Shape.prototype.toStringweer.

En dat veroorzaakt een oneindige lus.

antwoordde op 19/10/2012 om 07:50
bron van user

stemmen
0

goed, na het proberen een eerlijk bedrag van de test, kreeg ik eindelijk een aanwijzing. En ik geloof dat dit een antwoord op mijn eigen vraag hierboven. Typing: a.constructor.uber.constructor === twoDShape in firefox, keert het terug waar. En dat is de reden waarom het veroorzaakt oneindige lus.

antwoordde op 19/10/2012 om 08:07
bron van user

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