Co się dzieje z IE8 i metodą obiektów toString
?Problemy z Object.toString w IE8, backbone.js
Próbuję przesłonić toString
w moich modelach w Backbone.js, ale IE8 wydaje się nie rozpoznać, że metoda istnieje. Zmiana nazwy metody na coś innego działa dobrze, ale dlaczego nie mogę użyć toString
? To działa w Chrome.
var Foo = Backbone.Model.extend({
toString: function(){ return this.get("name"); },
description: function(){ return this.get("name"); }
});
var f = new Foo({name: "a foo"});
document.writeln(f.toString()); // "[object Object]", should be "a foo"
document.writeln("<br/>");
document.writeln(f.description()); // "a foo"
kod JSFiddle: http://jsfiddle.net/x96mR/3/
Dziwne ... Pomyślałem, że próbowałem, ale najwyraźniej nie. Dzięki! – Sam
Szkielet icopies wszystkie właściwości z prototypu według wyliczenia for-in. IE pomija właściwości z nazwami: konstruktor, toString, toLocaleString, valueOf i isPrototypeOf. Nazywa się [DontEnumBug] (https://developer.mozilla.org/en-US/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). –