我有一个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)来动态调用方法。这样做的正确方法是什么?
答案 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!"