Typescript:如何为动态执行的函数提供参数

时间:2016-10-25 02:45:39

标签: javascript typescript

export class MyClass {
    myFuncA(msg){console.log('A: '+msg); console.log('this: ',this);}

    myFuncB(msg){console.log('B: '+msg); console.log('this: ',this);}
} 

我有一个名为mc的类实例;我需要一种方法来执行Typescript类的动态命名函数。

这会正确执行该功能:

export class CallingClass {
    constructor(){
        let mc = new MyClass();
        mc['myFuncA'].call(); // outputs 'A: undefined' 'this: undefined'
    }
}

我有3个问题:

  1. 我如何提供参数? mc['myFuncA'].call('message')无效
  2. 如何将this设为CallingClassmc[...].call(...).bind(this)错误
  3. 如何将this设为MyClass
  4. plunker

1 个答案:

答案 0 :(得分:1)

请阅读Function.prototype.call()

的文档
  

我如何提供论据? mc [' myFuncA']。来电('消息')无法正常工作

就像正常的函数调用一样

mc['myFuncA']('message')

或者如果你真的想使用call

mc['myFuncA'].call(mc, 'message')
  

如何将其设置为CallingClass? mc [...]。call(...)。bind(this)errors

将其作为第一个参数传递给call

mc['myFuncA'].call(this, 'message')

这就是你如何使用bind

mc['myFuncA'].bind(this)('message')   
  

如何将其设置为MyClass?

mc['myFuncA'].call(mc, 'message')

mc['myFuncA']('message')