javascript / jQuery - сопоставить функцию из массива функций - PullRequest
0 голосов
/ 28 апреля 2011

, поэтому у меня есть массив таких функций:

var functions = [
   func1 = function(){ ... },
   func2 = function(){ ... },
   func3 = function(){ ... }
] ;

Если я вызываю функцию типа functions[func1](), она работает, но если я вызываю ее как functions['func1'](), это не так.

Какая разница?

А как я могу вызвать функцию, используя 2-й метод (сопоставить имя функции со строкой)?

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

Если вы хотите вызвать случайную функцию, попробуйте что-то вроде этого ( demo ):

var functions = [
   [ function(el){ el.html('function 1'); } ],
   [ function(el){ el.html('function 2'); } ],
   [ function(el){ el.html('function 3'); } ]
],

    random = Math.round(Math.random() * functions.length),
    output = $('#display');

functions[random][0](output);
4 голосов
/ 28 апреля 2011

Это должен быть объект, содержащий ключи:

var functions = {
   func1: function(){ ... },
   func2: function(){ ... },
   func3: function(){ ... }
};

Это позволит functions['func1']() работать.

Я не знаю, как ваш functions[func1]() когда-либо работал, хотя.

Ваш исходный код (непреднамеренно) создал бы (неосторожно) глобальные переменные (func1 и т. Д.), Но они не были бы действительными индексами в массиве functions.

1 голос
/ 28 апреля 2011
var functions = {   
                func1: function(){ ... },   
                func2: function(){ ... },   
                func3: function(){ ... }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...