我看过 TypeScript(就像在线游乐场......虽然:P)
据我所知,你想做的事情很容易完成,我自己尝试了一些事情这对我来说就像一个魅力:
class Greeter {
greeting: string;
closureMethod;
constructor (message: string) {
this.greeting = message;
var that = this;
var closureMethod = function()
{
console.log(that.greeting);
};
this.closureMethod = closureMethod;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter = new Greeter("world");
var another = new Greeter('Foobar');
var button = document.createElement('button');
button.innerText = "Say Hello";
button.onclick = function()
{
greeter.closureMethod();
another.closureMethod();
}
document.body.appendChild(button)
哪个有效,但更短(这也有效)
class Greeter {
greeting: string;
closureMethod;//define property here, no type
constructor (message: string) {
this.greeting = message;
var that = this;
this.closureMethod = function()
{
console.log(that.greeting);
};
}
greet() {
return "Hello, " + this.greeting;
}
}
两者都产生相同的结果:为每个新实例一遍又一遍地定义方法的构造函数(老实说,这不是一个好主意)。
如您所见,它使用that
, 而不是访问实例this
,这是一遍又一遍地创建相同方法的唯一好处……只要您有充分的理由这样做。但我不会对此大发雷霆。
上面的代码有效,它生成了一个你想要的构造函数。