2012-10-28 51 views
0

我有original.js文件,但我想改變它的一些東西。我不能修改original.js,但我可以添加其他better.js文件,這樣我就可以覆蓋的original.js覆蓋對象方法/函數

original.js包含了一些功能:

MyHandler = { 
    data:{}, 
    var1:false; 
    handlers:{}, 

    init:function(handlers){ 
     function1(); 
     function2(); 
    } 
    function1:function() 
    { 
    // function1 code that needs to be replaced 
    }; 
} 

$(document).ready(function() 
{ 
///...some code 
     MyHandler.init(); 
} 

我想重寫function1()新內容。 我應該怎樣在better.js文件中輸入?

P.S.我知道better.jsoriginal.js後應該遵循。

我試圖把下面better.js的代碼,但它不工作(好像沒有那麼function1工作)

MyHandler = { 
    function1:function() 
    { 
    // new code 
    }; 
} 

我在做什麼錯?

+0

你的問題似乎與jQuery沒有任何關係。沒有「jQuery函數」這樣的東西。 –

回答

3

就這樣做:

if (!MyHandler) { MyHandler = {};} 
MyHandler.function1 = function() { ... }; 

或者你可以使用jQuery $ .extend API方法。

+0

+1,這是如何做到的。您應該注意,新的'function'將無法訪問內部數據(例如'MyHandler.data')。 –

+1

@El:取決於函數的調用方式和實際設置。沒有足夠的信息來做出這樣的表述。它看起來像函數可以很容易地訪問'MyHandler.data',因爲'MyHandler'似乎是全局的。或者,如果函數使用'MyHandler.function1()'調用,則可以使用'this.data'訪問該屬性。 –

+0

你說的很對,我瞥了一眼,認爲這是揭示模塊模式。 –