Javascript jQuery:使用基于变量值的动态对象

Javascript jQuery:使用基于变量值的动态对象,javascript,jquery,Javascript,Jquery,我有几个对象,所有这些对象都有一些方法,它们被称为相同的方法,但做不同的事情 单击按钮时,我想调用init()方法,但是 对象根据我单击的按钮的不同而不同 这里是一个片段 $btn.on('click', function(e){ e.preventDefault(); var $trigger = $(this); var objectName = $trigger.data('object'); /* if objectName is 'user

我有几个对象,所有这些对象都有一些方法,它们被称为相同的方法,但做不同的事情

单击按钮时,我想调用
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);

});
可以这样动态调用对象吗?我知道这是因为它的属性和方法,但我找不到关于这个问题的任何东西


谢谢。

最好做地图绘制

var entities = {
    user: user,
    entity: entity
}

var objectName = $trigger.data('object');

entities[objectName].init($trigger);

最好是做映射

var entities = {
    user: user,
    entity: entity
}

var objectName = $trigger.data('object');

entities[objectName].init($trigger);
如果在全局范围中定义了对象(或函数),则可以使用
窗口
对象访问它们:

var funcT=function(){
log('调用了funcT');
}
var objT={
"a":1,,
b:2
}
函数a(){
var funcName='funcT'
窗口[名称]();
var objName='objT'
log(窗口[objName]);
}
a()
如果在全局范围中定义了对象(或函数),则可以使用
窗口
对象访问它们:

var funcT=function(){
log('调用了funcT');
}
var objT={
"a":1,,
b:2
}
函数a(){
var funcName='funcT'
窗口[名称]();
var objName='objT'
log(窗口[objName]);
}

a()
使用
窗口[变量]
可以基于另一个变量访问变量


因此,您所需要做的就是替换
objectName.init($tr)‌​伊格尔)与:
窗口[objectName]。‌​init()

使用
窗口[变量]
可以基于另一个变量访问变量


因此,您所需要做的就是替换
objectName.init($tr)‌​伊格尔)与:
窗口[objectName]。‌​init()

var objectName=JSON.parse($trigger.data('object'))
var objectName=JSON.parse($trigger.data('object')谢谢,这似乎是最干净的解决方案。谢谢,这似乎是最干净的解决方案。它们不是全局性的,所以我将坚持Maxx的回答。但无论如何,谢谢你,它们不是全球性的,所以我将坚持Maxx的回答。不过还是谢谢你