2017-12-08 14 views
0

私はメソッドを持っていますInfoDetails();私はそのメソッドを別のメソッドで呼び出す必要がありますが、他のメソッドを呼び出すためにその異なるメソッドに応答してください。だから私はしたい場合は、このようなものです:同じメソッドを使用するが、毎回異なるメソッドを呼び出す方法

InfoDetails(methodName){ 
    this.methodName(params); 
} 

私はそれをどのように行うことができます任意の提案?

+0

のように気にいらを行うことができ、より詳細な例を与えてください。これは非常に混乱しています。 –

+0

'window [methodName]();'は動作しますが、グローバルでなければなりません。別の解決方法は、あなたのメソッドをオブジェクトに保存することです。次に、単に 'objname [methodName]();' – Doomenik

答えて

3

するタイプの機能のだ場合、私はチェックします。 この

InfoDetails = function(methodName){ 
 
    return window[methodName](arguments) 
 
} 
 

 
mymethod1 = function(params){ 
 
    return 'mymethod1' 
 
} 
 
mymethod2 = function(params){ 
 
     return 'mymethod2' 
 
} 
 
console.log(InfoDetails('mymethod1')) 
 
console.log(InfoDetails('mymethod2')) 
 

 

 
//or its the function own method 
 
InfoDetails = function(methodName){ 
 
    return this[methodName](arguments) 
 
} 
 

 
InfoDetails.prototype.mymethod1 = function(params){ 
 
    return 'mymethod1' 
 
} 
 
InfoDetails.prototype.mymethod2 = function(params){ 
 
     return 'mymethod2' 
 
} 
 
var a = InfoDetails('mymethod1') 
 
console.log(a)

+0

あなたは今、両方の解決策の正/負を説明したら、その完璧な答え:) – Doomenik

1

あなたは、単にパラメータとして渡されたメソッドを呼び出すことができますが、それは私がcurrctlyあなたを理解し、私はわからないイム場合はもう少し守備の

InfoDetails(methodName, params){ 
    if(typeof methodName === ‘function’){ 
     methodName(params); 
    } 
} 
+0

これは、メソッド自体を渡すmethodNameを渡すことはありません。 '' InfoDetail( "SomeMethodname"、 "parameters")のような関数を呼び出すと '' InfoDetails(someMethod()、params ")'を呼び出さなければならないでしょうか、それとも間違っていますか? – Doomenik

+0

良い点。あなたは正しいかもしれない。しかし、その質問はあまり明確ではありませんでした。意図についてあまり詳しくはありません –

関連する問題