事件回调,使用变量event-name。可能?

时间:2011-08-06 22:08:57

标签: javascript-events javascript

我有一个自定义类,如下所示:

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

我正在使用第三方库来创建和管理'A'类型的'事物',以及第二个用于创建和管理'B'类型事物的第三方库。

当我的A或B类型的东西加载时,我想执行一个回调。

假设第一个第三方库在加载A类事件时广播'onLoad'事件,而第二个库在加载B类事件时广播'onReady'事件。

我可以说:

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 :(得分:0)

onLoadonReadything对象的常规属性。要使用其字符串名称访问任何属性,请使用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