好的,我不認爲在C#中這樣做,但是JavaScript的設計具有更多的訪問靈活性。在javascript中爲第三方封閉添加一個函數
有這樣
(function($)
{
...more stuff
var results={a:1,b:2} //this I need to modify
var someData={x:1}
send = function(){
//send results ajax
};
if(typeof beforeSend=='function')
beforeSend(someData) //hook to use results
})(jQuery)
所以一個插件,在我自己的代碼,我具備的功能window.beforeSend = function(d){}
,它確實有someData這是我需要修改的範圍。但這裏有一個問題: 我該如何修改結果變種,它是在它發送它之前的封閉。 我需要添加
window.beforeSend = function(d){
window.quantumTunnelThroughScope.results['c']=1
}
的原因,我需要做的,這是因爲我不能修改該插件的代碼。當然,如果我在閉包中添加beforeSend,它可以工作,但是我正在修改這種情況下我不允許執行的庫。
我見過一些很棒的eval('this.xx'= function)等等,但我無法讓它工作。
編輯:我澄清,實際上它是在需要進行編輯
全局變量? – mathiasfk
@TJCrowder很好,因爲我需要在結果發送之前添加c = 1 – AwokeKnowing
@TJCrowder是的,我很抱歉,我將代碼縮減爲本質,但通過在示例 – AwokeKnowing