私はC#でこれを行うとは思わないでしょうが、javascriptはより柔軟にアクセスできるように設計されています。JavaScriptをサードパーティのクロージャに追加する
は自分のコードでは、私は関数にwindow.beforeSend = function(d){}
を持っており、それは私が変更する必要がスコープ内にあるsomeDataがを持っているので、この
(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)
のようなプラグインがあります。しかしここに質問があります: どうすればいいですか結果 varは送信前にクロージャ内にあります。 私は
window.beforeSend = function(d){
window.quantumTunnelThroughScope.results['c']=1
}
私はプラグインのコードを変更することはできませんので、これは実行する必要がある理由を追加する必要があります。もちろん、beforeSendをクロージャー内に追加すると、それは機能しますが、この場合は私が許可していないライブラリを変更しています。
私はいくつかの素晴らしいeval( 'this.xx' = function)などを見ましたが、動作させることはできません。
EDIT:私は実際にそれが
グローバル変数:
$(".foo").bar()
でbar
、あなたはjQuery.fn
代わりのjQuery
上でそれを見つけることができますか? – mathiasfk@TJCrowderよく、結果を送る前にc = 1を追加する必要があります。 – AwokeKnowing
@TJCrowderはい、申し訳ありませんが、コードを本質的に減らしていますが、例で間違った変数を渡してしまいました。 – AwokeKnowing