Создание временных функций с динамически генерируемыми именами в 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?
1 ответ
Это более чистый вопрос javascript. Предполагая глобальную область (окно) для простоты,
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);