使用JQuery时,扩展具有重写的toString()函数的对象会导致Firefox中出现“不支持操作”错误。但是在Chrome中它运行正常。这是JQuery中的错误还是我在下面的代码片段中做错了什么?
var foo = function () {
var that = this;
that.toString = function () { return "foobar" };
return that;
}();
var foo2 = function () {
var that = this;
that = $.extend(true, {}, foo); // copy = options[ name ]; = "Operation is not supported" in Firefox 3.6.8
return that;
} ();
alert(foo.toString()); //"foobar" in Chrome
alert(foo2.toString()); //"foobar" in Chrome
JQuery版本1.4.2
非常感谢,
Godders
答案 0 :(得分:1)
当您调用匿名函数获取“foo”的值时,this
变量将引用窗口对象。您为“foo2”调用的匿名函数也是如此。因此,您正在尝试扩展窗口对象。这真的是你想要做的吗?
编辑 Firefox似乎正在绊倒的是尝试复制window
的“sessionStorage”属性。尝试添加以下行:
var test = window['sessionStorage'];
你会得到完全相同的错误。