2016-08-14 13 views
0

を経由して、新たに追加された機能を削除します。私はこのオリジナルの機能を持っているAJAX

<script> 
function f(x){..} 
function z(x){..} 
... 
</script> 

これらの新機能はAJAXを経由して、後にロードされます。

<script> 
function xyz(){..} 
windows.abc(){..} 
... 
</script> 

どのように私は、「これ」にバインドさのすべての機能を削除します(この場合、f(x)、z(x))を除いて、「ウィンドウ」スコープを使用します。私は動的な意味でこれを必要としています。新しい機能が "this"と "windows"スコープにバインドされていることを除いてはわかりません。 私は元の関数名を格納し、ループ中に削除しないことを考えています。

+0

は、本来の機能のいずれかを上書きすることはできますか?たとえば、 'abc'という関数があり、' abc'という関数もロードするので、最初の関数を上書きしますか? – vlaz

+0

こんにちは簡単です – jfet93

答えて

0

私はコンテキストが何であるか分かりませんが、異なる値でグローバルスコープを汚染することは避けてください。

ストアあなたの現在のグローバル関数の配列:

// Collect existing functions into an object 
// It will look like this: { f: 1, z: 1 } 
var funcs = {}; 
Object.keys(window).filter(function (c) { 
    typeof window[c] === "function" && (funcs[c] = 1); 
}); 

// Load new stuff 
$.ajax(..., function() { 
    // After loading it, delete the functions that didn't exist before 
    Object.keys(window).forEach(function (c) { 
     typeof window[c] === "function" && !funcs[c] && delete window[c]; 
    }); 
}); 
関連する問題