我有一个自定义类,如下所示:
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");});
非常感谢!
答案 0 :(得分:0)
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