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

时间:2016-08-17 12:27:57

标签: javascript jquery

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

  

当我点击一个按钮时,我想调用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);

});

是否可以动态调用这样的对象?我知道它的属性和方法,但我找不到任何关于这个问题。

谢谢。

3 个答案:

答案 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($tr‌​igger);替换为:window[objectName].‌​init();