通过类传递函数

时间:2013-12-20 10:30:00

标签: typescript

我是打字稿的新手,我有一个问题。我写了以下代码:

class FunctionMachine {
 name: string;
 constructor(_name: string) {
  this.name = _name;
 } 
 sayName() {
  console.log(this.name);
 }
 sayNameWithCallback(callback){
  console.log(this.name);
  callback();
 }
}

var fmHans = new FunctionMachine("Hans");
var fmOle = new FunctionMachine("Ole");
fmOle.sayName();
fmHans.sayNameWithCallback(fmOle.sayName);

我希望它能在跑步时写出“Ole,Hans,Ole”。相反,它返回“Ole,Hans”。

看起来像“这个”。当我使用fmOle.sayName作为参数时,指的是我所期望的东西。

TypeScript不支持,还是需要重写代码?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要保护您的范围。 Ryan Cavanaugh之前曾提到过一个技巧,你在课堂上使用胖箭来做这个:

class FunctionMachine {
   name: string;
    constructor(_name: string) {
        this.name = _name;
    } 

    sayName = () => { // <-- This is the clever bit
        console.log(this.name);
    }

    sayNameWithCallback(callback) {
        this.sayName();
        callback();
    }
}

var fmHans = new FunctionMachine("Hans");
var fmOle = new FunctionMachine("Ole");

console.log('First Call');
fmOle.sayName();

console.log('Second Call');
fmHans.sayNameWithCallback(fmOle.sayName);