2017-02-27 64 views
1

我有一個叫做myObject的類,它有多種方法,其中之一是add。我正在使用另一個函數,它帶有我想要使用的函數myObject。如果我想使用add,我會通過它「添加」。如果我想使用delete,我會通過它'刪除'等。在函數test的定義中,如果我使用obj.add它工作正常,但如果我使用obj.func,傳遞參數,它不起作用。我測試確保func = add,它是,但由於某種原因,它不會使用該參數。任何想法我做錯了什麼?將函數名稱作爲參數傳遞給另一個不工作的函數javascript

testObj = new myObject(); 
test(testObj, 'add', 3); 


function test(obj, func, parm){ 
    var answer = obj.func(parm); 
} 
+2

使用括號符號'obj [func](param)'' – elclanrs

回答

2

由於對象在JavaScript中的工作方式。 obj.func將嘗試在obj中運行一個名爲func的函數。但是,如果您記得javascript中的所有對象都是函數。然後你可以這樣做:obj[func]它將評估函數變量,並在obj中查找與該評估名稱相關的方法。

testObj = new myObject(); 
test(testObj, 'add', 3); 


function test(obj, func, parm){ 
    var answer = obj[func](parm); 
} 
相關問題