Как это:
actions[key + "Dialog"] = function () { ... };
Однако, поскольку функции Javascript захватывают переменные по ссылке, ваш код не будет работать должным образом.
Вам необходимо определить внутреннюю функцию внутри отдельной функции, чтобы каждая из них получала отдельную переменную (или параметр) key
.
Например:
var actionNames = [ 'create', 'update' ]; //This creates an array with two items
var Dialog = { }; //This creates an empty object
for (var i = 0; i < actionNames.length; i++) {
Dialog[actionNames[i]] = createAction(actionNames[i]);
}
function createAction(key) {
return function() { ... };
}
Вы можете использовать это так:
Dialog.create(...);
EDIT
Вы пытаетесь загрязнить глобальное пространство имен несколькими функциями, связанными с диалогами.
Это плохая идея; Лучше организовать ваши функции в пространство имен.
Если вы действительно хотите расширить глобальное пространство имен, вы можете сделать это следующим образом:
var actionNames = [ 'create', 'update' ]; //This creates an array with two items
for (var i = 0; i < actionNames.length; i++) {
this[actionNames[i] + 'Dialog'] = createAction(actionNames[i]);
}
Это создаст для глобальных функций, называемых createDialog
и updateDialog
.
При обычном вызове функции ключевое слово this
относится к глобальному пространству имен (обычно это объект window
).