1

使用 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

非常感谢,

戈德斯

4

1 回答 1

1

当您调用匿名函数以获取“foo”的值时,该this变量将引用窗口对象。您为“foo2”调用的匿名函数也是如此。因此,您正在尝试扩展 window 对象。这真的是你想做的吗?

编辑Firefox 似乎绊倒的是试图复制window. 尝试添加这一行:

var test = window['sessionStorage'];

你会得到完全相同的错误。

于 2010-08-23T12:48:54.567 回答