オブジェクトのIE8およびtoString
メソッドは何ですか?IE8、backbone.jsでObject.toStringに関する問題
Backbone.jsのモデルでtoString
を無効にしようとしていますが、IE8はそのメソッドが存在しているとは思われません。メソッド名を別のものに変更すると問題なく動作しますが、なぜtoString
を使用できませんか?これは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"
JSFiddleコード:http://jsfiddle.net/x96mR/3/
奇妙な...私はそれを試みたと思ったが、明らかにそうではなかった。ありがとう! – Sam
for-in列挙によって、プロトタイプのすべてのプロパティがバックボーンに追加されます。 IEはコンストラクタ、toString、toLocaleString、valueOf、isPrototypeOfという名前のプロパティをスキップします。これは[DontEnumBug](https://developer.mozilla.org/en-US/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug)と呼ばれています。 –