2010-04-02 106 views
0
工作

我试图如下:jQuery.extend无法在Internet Explorer工作,但在Firefox

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

难道这与你的套管在jquery.extend(...)'上有什么关系吗?它不应该是'jQuery.extend(...)'? – 2010-04-02 23:40:14

回答

1

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

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

除非你真的是打算做一个深层副本,在这种情况下,第一个参数应该是真实的,那么目标,其次是类:

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

属性我使用

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

,我有方法的同样的问题只有在IE8没有找到。 Firefox 3.6对于Opera 10来说非常相似。

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

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

+0

我为每个扩展添加了$(document).ready(),它解决了我在IE8上的问题。现在,我所有的类都在单独的文件中,并通过延迟加载函数加载。为了生产,一切都将被合并和缩小。 – Bastan 2010-09-29 16:35:11

相关问题