2017-02-27 3 views
1

myObjectというクラスがあり、その中には複数のメソッドがあり、そのうちの1つはaddです。私は使用するために、myObjectの関数の引数を持つ別の関数を使用しています。 addを使用する場合は、「追加」を渡します。 deleteを使用したい場合、私はそれを '削除'などに渡します。関数testの定義では、obj.addを使用すると正常に動作しますが、渡されたパラメータobj.funcを使用すると動作しません。私はfunc = addを確かめるためにテストしましたが、それは何らかの理由でパラメータでは動作しません。私が間違っていることは何ですか?関数名がparamとして他の関数に渡されていない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.funcfuncというobjで関数を実行しようとします。しかし、あなたは、JavaScriptのすべてのオブジェクトが関数であることを覚えていれば。次に、これを行うことができます:obj[func]これはfunct変数を評価し、その評価された名前でobjのメソッドを探します。

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


function test(obj, func, parm){ 
    var answer = obj[func](parm); 
} 
関連する問題