我有几个对象,所有这些对象都有一些被称为相同但做不同的方法。
当我点击一个按钮时,我想调用
init()
方法,但是 根据我点击的按钮,对象会有所不同。
这是一个代码段
$btn.on('click', function(e){
e.preventDefault();
var $trigger = $(this);
var objectName = $trigger.data('object');
/*
if objectName is 'user', I want to call user.init(),
if it's 'product' I want to call product.init() and so on...
right now i get an error if I call like his
*/
objectName.init($trigger);
});
是否可以动态调用这样的对象?我知道它的属性和方法,但我找不到任何关于这个问题。
谢谢。
答案 0 :(得分:3)
最好做映射
var entities = {
user: user,
entity: entity
}
var objectName = $trigger.data('object');
entities[objectName].init($trigger);
答案 1 :(得分:1)
如果你的对象(或函数)在全局范围内定义,你可以使用window
对象访问它们:
var funcT = function() {
console.log('funcT was called');
}
var objT = {
'a': 1,
'b': 2
}
function a() {
var funcName = 'funcT'
window[funcName]();
var objName = 'objT'
console.log(window[objName]);
}
a()

答案 2 :(得分:1)
使用window[variable]
,您可以根据另一个变量访问变量。
所以您需要做的就是将objectName.init($trigger);
替换为:window[objectName].init();