我有这个原始功能:
<script>
function f(x){..}
function z(x){..}
...
</script>
稍后将通过AJAX加载这些新函数:
<script>
function xyz(){..}
windows.abc(){..}
...
</script>
如何删除&#34;此&#34;中绑定的所有功能?和&#34; windows&#34;范围除了原始范围(在这种情况下为f(x),z(x))。我需要这是动态的意思我不知道新的功能是什么,除了它们将被绑定 到了这个&#34;这个&#34;和&#34; windows&#34;范围。我正在考虑存储原始函数名称,而不是在循环中删除它们。
答案 0 :(得分: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];
});
});