Выполнить функцию JavaScript из объекта - PullRequest
1 голос
/ 23 февраля 2010

Можно ли выполнить функцию следующим образом:

this.values(value);

не

this.values[value]();
this.values[value].call();

Если так, то как? Или любые другие методы? Спасибо.

Вот мой код:

write: function(value) {

  this.values = {
    "red": function() { /* do something */ },
    "orange": function() { /* do something */ },
    "blue": function() { /* do something */ }
  };

  return this.values[value]();

}

write("red");

Ответы [ 3 ]

4 голосов
/ 23 февраля 2010

Может быть, вы можете использовать переменную внутри:

write: function(value) {

  var values = {
    red: function() { /* do something */ },
    orange: function() { /* do something */ },
    blue: function() { /* do something */ }
  };

  return values[value];

}

И вернуть функцию вместо запуска внутри. И позвони после.

1 голос
/ 23 февраля 2010

Нет. Но нет ничего плохого в том, как это делается в данный момент.

0 голосов
/ 11 апреля 2013

Вы всегда можете сделать это:

write: function(value) {    
  switch(value){
    case "red":
    /* do something */
    break;

    case "orange":
    /* do something */
    break;

    case "blue":
    /* do something */
    break;

    default:
    /* do something */
    break;
  }    
}

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