обратный вызов события, используя переменную имя-события. возможный? - PullRequest
0 голосов
/ 07 августа 2011

У меня есть собственный класс, который выглядит следующим образом:

function myClass(){
  var thing;
  var thingtype;
}

Я использую стороннюю библиотеку для создания вещей типа «А» и управления ими, а также стороннюю библиотеку для создания и управления вещами типа «В».

Когда моя вещь типа A или B загружается, я хотел бы выполнить обратный вызов.

Предположим, что первая сторонняя библиотека передает событие 'onLoad', когда загружается объект типа A, а вторая библиотека передает событие 'onReady', когда загружается объект типа B.

Я мог бы сказать:

if (thingtype=='A'){
  thing.onLoad(function(){alert ("my callback");})
}
if (thingtype=='B'){
  thing.onReady(function(){alert ("my callback");});
}

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

if (thingtype=='A'){
  myLoadEvent = 'onLoad';
}
if (thingtype=='B'){
  myLoadEvent = 'onReady';
}
thing.myLoadEvent(function(){alert ("my callback");});

Большое спасибо!

1 Ответ

0 голосов
/ 07 августа 2011

onLoad и onReady являются обычными свойствами объекта thing. Чтобы получить доступ к любому свойству, используя его строковое имя, используйте obj[x], чтобы найти это значение:

thing[myLoadEvent](function(){alert ("my callback");});

Вот более простой пример, иллюстрирующий эту концепцию:

var foo = {
    bar: function() { return 'baz'; }
};

console.log(foo.bar());                  // => 'baz'
console.log(foo['bar']());               // => 'baz'
console.log(foo.bar() === foo['bar']()); // => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...