Если вы переместите toString
за пределы Backbone.Model.extend
на:
Foo.prototype.toString = function(){ return this.get("name"); };
Это работает. Я подозреваю, что Backbone делает некоторые интересные вещи, которые не работают так, как ожидалось в IE8
Редактировать (спасибо @Ferdinand Prantl):
Все свойства, переданные в Backbone.extend
, добавляются в prototype
модели с использованием перечисления for-in
. IE < 9
имеет ошибку, из-за которой не копируются определенные свойства, называемые DontEnumBug.
DontEnumBug
В IE <9 JScript пропустит любое свойство в любом объекте, где
в цепочке прототипов объекта есть одноименное свойство, которое
имеет атрибут DontEnum. </p>
конструктор, toString , valueOf, toLocaleString, prototype, isPrototypeOf, propertyIsEnumerable, hasOwnProperty, length и unique будут пропущены