Динамическая генерация имени функции на основе переменной - PullRequest
0 голосов
/ 29 марта 2011

Я хочу создать функцию, имя которой будет происходить из содержимого одной из моих переменных.

Пример:

var myFunctionName = "tryAgain";`

           [tryAgain]
               |
               |
               |
function myFunctionName() {
    alert('Try Again !');
};

Ответы [ 4 ]

4 голосов
/ 29 марта 2011

Для создания новой функции в текущем контексте

this[myFunctionName] = function() {
    // statements
}
3 голосов
/ 29 марта 2011

Хотя на ваш вопрос уже был дан правильный ответ, я предлагаю использовать объект, который содержит ваши функции, при условии, что вы сгенерировали более одного.Преимущество заключается в том, что вы можете выполнять итерации по всем сгенерированным функциям и одновременно помещать их в пространство имен.

var funcs = {};
var name = 'test';

funcs[name] = function()
{
    alert("Called a custom function");
};

funcs.test();
// Does the same funcs[name]();
1 голос
/ 29 марта 2011
window[myFunctionName] = function () {
    alert('Try Again !'); };

Работает в глобальном контексте.

0 голосов
/ 29 марта 2011
eval("function "+myFunctionName+"(){alert('Try Again !');}");

Я не рекомендую это;) Но это еще один способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...