2016-10-25 46 views
-1
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类的动态命名函数。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

plunker

+2

读取文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call –

+0

@BryanChen谢谢布莱恩,这很有帮助。不知道为什么我认为这会很复杂。你是否在意足够写一个解决方案,以便我可以选择它?否则,我会写我自己的。 – BeetleJuice

回答

1

请阅读Function.prototype.call()

我如何提供参数的文档? MC [ 'myFuncA'。电话( '信息')不工作

就像正常的函数调用

mc['myFuncA']('message') 

,或者如果你真的想用call

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

我如何设置这是CallingClass? MC [...]调用(...)。结合(这)错误

它传递给call作为第一个参数

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

这是你如何使用绑定

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

我怎样才能设置这是MyClass?

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

mc['myFuncA']('message') 
相关问题