Javascript öröklés végtelen ciklus

szavazat
18

Azt hozza létre ezt a blokkot kódot 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());

Nem tudom, miért, de amikor elindul, firefox fagyasztva. Próbáltam órán kitalálni. És az a gyanúm, nem kell végtelen hurkok az én kódot, és él valahol a sérült állapota, de én nem találtam ki. Tudna valaki segíteni ennek a fejfájás. Köszönöm!

A kérdést 19/10/2012 07:33
felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

Ha telefonál this.constructor.uber.toString()származó Shape.prototype.toString, uberaz twoDShape.prototypeami Shape, és úgy, hogy toStringa módszer Shape.prototype.toStringújra.

És ez okozza végtelen ciklusba került.

Válaszolt 19/10/2012 07:50
a forrás felhasználó

szavazat
0

Nos, miután megpróbálta egy szép összeg a vizsgálat, végül kapott egy nyom. És azt hiszem, ez egy válasz a saját fenti kérdés. Gépelés: a.constructor.uber.constructor === twoDShape a firefox, akkor igazat ad vissza. És ez miért okoz végtelen ciklusba.

Válaszolt 19/10/2012 08:07
a forrás felhasználó

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