Запускать именованные функции из массива с помощью JavaScript? - PullRequest
2 голосов
/ 18 апреля 2011

Я очень плохо знаком с JavaScript, но эта тема, похоже, привлекла лишь скудное внимание форума.Учитывая ряд простых функций:

function do_something(){...};
function do_somemore(){...};
function do_something_else(){...};

Я ожидал, что смогу явно назначить их ячейкам в массиве (здесь 2D).

myMatrix[5][3] = do_something();
myMatrix[5][4] = do_somemore();
myMatrix[5][5] = do_something_else();

Причина, по которой я хочуИспользуйте такой подход:

  1. просто для понимания и обслуживания.
  2. устраняет потенциально избыточные назначения анонимных функций в массиве.
  3. любая заданная функция можетбыть назначенным нескольким ячейкам массива, например:

    myMatrix[2][6] = do_somemore();
    myMatrix[5][4] = do_somemore();
    myMatrix[6][3] = do_somemore();
    

К сожалению, такие вызовы, как следующие (основанные на различных примерах на форуме, плюс немного "сосать и видеть")все сбои.

x = myMatrix[5][4]do_somemore();         -> "missing ; before statement"
x = (myMatrix[5][4])do_somemore();       -> "missing ; before statement"
x = (myMatrix[5][4]do_somemore)();       -> "missing ) in parenthetical"
x = (myMatrix[5][4])(do_somemore());     -> "is not a function"
x = (myMatrix[5][4])()do_somemore();     -> "missing ; before statement"
x = myMatrix[5][4]()do_somemore();       -> "missing ; before statement"
x = myMatrix[5][4]();                    -> "is not a function"
x = (myMatrix[5][4])();                  -> "is not a function"

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

Ответы [ 4 ]

2 голосов
/ 18 апреля 2011

Вы должны назначить их так:

myMatrix[5][3] = do_something;
0 голосов
/ 18 апреля 2011
myMatrix[5][3] = do_something; 
myMatrix[5][4] = do_somemore; 
myMatrix[5][5] = do_something_else; 


var x = myMatrix[5][3]();
var y = myMatrix[5][4]();
var z = myMatrix[5][5]();
0 голосов
/ 18 апреля 2011

Мне не совсем понятно, что вы ищете, но:

Прежде чем вы сможете присвоить значение массиву, этот массив должен существовать:

var myMatrix = [];
myMatrix[5] = [];
myMatrix[5][3] = … // Then you can assign something

Затем, если вы хотите присвоить возвращаемое значение функции:

myMatrix[5][3] = do_something();

Или, если вы хотите назначить саму функцию :

myMatrix[5][3] = do_something;

… а затем вызовите его и присвойте его возвращаемое значение x:

var x = myMatrix[5][3](); 

… что совпадает с var x = do_something() за исключением того, что внутри функции this будет myMatrix[5] вместо window.

0 голосов
/ 18 апреля 2011
myMatrix[5][3] = do_something;

Ваш способ установил бы значение RESULT функции!

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