2014-12-08 39 views
0

我有一個JSON對象如下呼叫的方法與從JSON對象參數/功能動態

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

我有一個method name:在separate variables(例如getData1)& arguments(ID1,ID2)。這些都是動態的。

手動我可以調用該方法如下

jsonData.getData1(id1, id2); 

但我想動態調用的方法與通過2個參數(ID1,ID2)。什麼是正確的做法呢?

回答

3

請記住,jsonData.getData1只是jsonData['getData1']的快捷方式,但在後一版本中,您放在方括號內的內容可以是任何表達式,而不僅僅是文字。所以你可以這樣做:

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

感謝安德魯!它工作正常! – Asik 2014-12-08 07:45:05

+0

謝謝你提到'不僅僅是一個字面'! – Haywire 2014-12-08 09:06:33

0

這可能是連接到每個函數的調用方法的情況。

jsonData[methodName].call(id1, id2) 
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!"