0

我正在尝试以下操作:

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

谢谢!

4

3 回答 3

1

扩展的第一个参数应该是扩展 Class1 以包含 Class2 的属性的目标。因此,您应该改为:

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

除非你真的打算做一个深拷贝,在这种情况下,第一个参数应该是 true,然后是目标,然后是类:

jQuery.extend(true, c, Class1, Class2);
于 2010-04-02T23:42:40.327 回答
0

这就是你所需要的。现在Class1应该已经扩展了Class2

jQuery.extend(Class1, Class2);

检查jQuery.extend 文档

于 2010-04-03T08:05:36.363 回答
0

我在用

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

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

最重要的是,错误是不一致的。当我刷新页面时,我可能会或不会再次遇到问题。

我认为就我而言,这可能与我的脚本加载方式有关。但仍然...... IE 再次引起问题......

于 2010-09-29T15:03:00.203 回答