通过AJAX删除新添加的功能

时间:2016-08-14 18:02:19

标签: javascript ajax

我有这个原始功能:

<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;范围。我正在考虑存储原始函数名称,而不是在循环中删除它们。

1 个答案:

答案 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];
   });
});