使用json对象中的参数动态调用方法/函数

时间:2014-12-08 07:25:58

标签: javascript json

我有一个JSON对象如下

var jsonData = {
    getData1:function(id1, id2){
    },
    getData2:function(id1, id2){
    }
};

我有method name(例如:getData1)& arguments中的separate variables(id1,id2)。这些是动态的。

手动我可以按如下方式调用方法

jsonData.getData1(id1, id2);

但我想通过传递2个参数(id1,id2)来动态调用方法。这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

请记住,jsonData.getData1只是jsonData['getData1']的快捷方式,但在后一版本中,您放在方括号内的内容可以是任何表达式,而不仅仅是文字。所以你可以这样做:

var methodName = "getData1";
jsonData[methodName](id1, id2);

答案 1 :(得分:0)

这可能是附加到每个函数的调用方法的情况。

jsonData[methodName].call(id1, id2)

答案 2 :(得分:0)

在JavaScript中,也可以通过数组表示法轻松访问对象的属性。所以,在你的情况下:

jsonData.getData1(id1, id2);

jsonData['getData1'](id1, id2); 

以同样的方式行事。 你也可以这样做:

var methodName = document.getElementById('methodNameInput').value;
jsonData[methodName](id1, id2); 

methodName只需要成为一个字符串。

更多:

var ob = {
   foo: 'hello',
   bar: function(x) {
     return x+'!';
   }
 };

 console.log(ob['foo'] + ' ' + ob['bar']('world'));   // prints "hello world!"
 console.log(ob.foo + ' ' + ob.bar('world'));         // prints "hello word!"