jQuery.extend不能在Internet Explorer中工作,但可以在Firefox中使用

时间:2010-04-02 23:36:33

标签: jquery internet-explorer extend

我正在尝试以下方法:

var Class1 = function() {}
Class1.prototype = {
    MyMethod: function() { /* Do Stuff */ }
}

var Class2 = function() {}
Class2.prototype = {
    AnotherMethod: function() { /* Do More Sweet Stuff */ }
}

jquery.extend(true, Class1, Class2);

我现在应该能够做到以下几点:

var c = new Class1();
c.AnotherMethod();

在Firefox 3.6中,这很好用。在Internet Explorer 7& 8它说“对象不支持这个属性或方法”。

我是否误解了$ .extend应该如何工作,或IE是否表现不佳?

jQuery版本:1.3.2

谢谢!

3 个答案:

答案 0 :(得分:1)

extend的第一个参数应该是扩展Class1以包含Class2属性的目标。所以,你应该这样做:

var c;
jQuery.extend(c, Class1, Class2);

除非您真的打算进行深层复制,否则第一个参数应为true,然后是目标,然后是类:

jQuery.extend(true, c, Class1, Class2);

答案 1 :(得分:0)

这就是你所需要的。现在Class1应该使用Class2

的属性进行扩展
jQuery.extend(Class1, Class2);

检查jQuery.extend documentation

答案 2 :(得分:0)

我正在使用

Class2 = $.extend(true,{},Class1,Class2);

我有同样的方法问题,仅在IE8中找不到。 Firefox 3.6与Opera 10完全相同。

除了一切之外,错误是不一致的。当我刷新页面时,我可能会再次遇到问题。

我认为在我的情况下,它可能与我的脚本加载方式有关。但仍然...... IE再次造成问题。