2010-04-02 61 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

相關問題