jQuery.extend 无法在 Internet Explorer 中运行,但可以在 Firefox 中运行

发布于 2024-08-27 17:44:20 字数 538 浏览 4 评论 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

谢谢!

I am attempting the following:

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);

I should now expect to be able to do the following:

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

In Firefox 3.6 this works just fine. In Internet Explorer 7 & 8 it says "Object doesn't support this property or method".

Am I misunderstanding how $.extend should work, or is IE behaving badly?

jQuery Version: 1.3.2

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜深人未静 2024-09-03 17:44:20

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

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

除非您确实打算进行深层复制,在这种情况下,第一个参数应该为 true,然后是目标,然后是类:

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

The first parameter to extend should be the target of extending Class1 to include Class2's properties. So, you should instead do:

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

Unless you truly were intending to do a deep copy, in which case the first parameter should be true, and then the target, followed by the classes:

jQuery.extend(true, c, Class1, Class2);
盗心人 2024-09-03 17:44:20

这就是您所需要的。现在 Class1 应该已经用 Class2 的属性进行了扩展,

jQuery.extend(Class1, Class2);

检查 jQuery.extend 文档

This is all you need. Now Class1 should have been extended with the properties of Class2

jQuery.extend(Class1, Class2);

Check jQuery.extend documentation

菩提树下叶撕阳。 2024-09-03 17:44:20

我正在使用

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

并且我有同样的问题,方法仅在 IE8 中找不到。 Firefox 3.6 对于 Opera 10 来说非常好。

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

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

I am using

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

And i have same issue of method not found only in IE8. Firefox 3.6 is great same for Opera 10.

On top of everything, the error is inconsistent. When i refresh the page i might or not get the problem again.

I think that in my case it could be related to the way my script are loaded. But still.... IE is causing problem... again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文