在 jQuery 中创建具有动态生成名称的时间函数
Creating temporal functions with dynamically generated names in jQuery
我有一个动态加载的外部 javascript 文件,它有一个 oncomplete=
变量,每次调用时它的值都会增加。例如:
- 第一次: external.js?oncomplete=sayHello1
- 第二次: external.js?oncomplete=sayHello2
- 第三次: external.js?oncomplete=sayHello3
因此我需要动态创建函数来每次执行 oncomplete= 回调。这意味着,我需要使用这些名称创建函数:
- sayHello1();
- sayHello2();
- ...等等
这是我当前的代码,它创建了一个特定名称的函数:
var sayHello = function (){
console.log('hello');
};
sayHello();
问题是:如何在 jQuery 中创建具有动态生成名称的时间函数?
这更像是一个纯粹的 javascript 问题。为简单起见,假设全局范围 (window),
var sayHello = function () { /* body */ };
等同于
window['sayHello'] = function () { /* body */ };
现在,很明显,您不想那样污染全局范围,因此您可以对任何其他对象做同样的事情。
dynamicFunctions = {};
var oncomplete = 'sayHello1';
dynamicFunctions[oncomplete] = function () { console.log('hello'); };
dynamicFunctions[oncomplete]();
// outputs hello to the console
不过,要记住一件事,那就是您一开始就这样做的原因。由于我不确定您的具体要求,您是否有理由不能这样做?
// load external.js?oncomplete=sayHello&increment=4
sayHello(increment);
我有一个动态加载的外部 javascript 文件,它有一个 oncomplete=
变量,每次调用时它的值都会增加。例如:
- 第一次: external.js?oncomplete=sayHello1
- 第二次: external.js?oncomplete=sayHello2
- 第三次: external.js?oncomplete=sayHello3
因此我需要动态创建函数来每次执行 oncomplete= 回调。这意味着,我需要使用这些名称创建函数:
- sayHello1();
- sayHello2();
- ...等等
这是我当前的代码,它创建了一个特定名称的函数:
var sayHello = function (){
console.log('hello');
};
sayHello();
问题是:如何在 jQuery 中创建具有动态生成名称的时间函数?
这更像是一个纯粹的 javascript 问题。为简单起见,假设全局范围 (window),
var sayHello = function () { /* body */ };
等同于
window['sayHello'] = function () { /* body */ };
现在,很明显,您不想那样污染全局范围,因此您可以对任何其他对象做同样的事情。
dynamicFunctions = {};
var oncomplete = 'sayHello1';
dynamicFunctions[oncomplete] = function () { console.log('hello'); };
dynamicFunctions[oncomplete]();
// outputs hello to the console
不过,要记住一件事,那就是您一开始就这样做的原因。由于我不确定您的具体要求,您是否有理由不能这样做?
// load external.js?oncomplete=sayHello&increment=4
sayHello(increment);