如何为typescript中的变量指定方法?
我想在变量中存储一个类方法,然后调用它。我怎样才能使这个例子起作用?如果我只将“greeter”存储在“a”中,然后打电话给greet,这是可行的,但我不想这样做。我正在试穿它TL;博士:如何为typescript中的变量指定方法?,typescript,Typescript,我想在变量中存储一个类方法,然后调用它。我怎样才能使这个例子起作用?如果我只将“greeter”存储在“a”中,然后打电话给greet,这是可行的,但我不想这样做。我正在试穿它TL;博士: class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + th
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
let button = document.createElement('button');
let a = greeter.greet;
button.textContent = "Say Hello";
button.onclick = function() {
alert(greeter.greet());//works
alert(a());//doesn't work
}
document.body.appendChild(button);
实际解释:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
let button = document.createElement('button');
let a = greeter.greet;
button.textContent = "Say Hello";
button.onclick = function() {
alert(greeter.greet());//works
alert(a());//doesn't work
}
document.body.appendChild(button);
这实际上与TypeScript没有任何关系,但与JavaScript以及它的工作方式有关
当您将greeter.greet()
分配给a
时,您实际做的是将greeter
的类方法greet()
分配给a
,而不是将greeter
类实例的greet()
方法命名为greeter
。因此,通过bind()
-inggreeter
到greeter#greet()
函数,您可以将greeter
的greet()
方法分配给a
进一步阅读:
我怎样才能自动完成这项工作?我有一个函数应该将方法作为参数,那么有没有“自动绑定”的方法呢?因为我有这样一个函数:函数takemethod(let方法),为什么不在调用
takemethod
时传递已经绑定到实例的函数呢?或者将实例作为第二个参数传递,并在函数内部绑定到它。所以这是不可能的?因为我想避免额外的争论。通常在javascript中,您可以只分配函数。比如,“a=console.log;a(“something”)”可以工作,所以我希望它在typescript中也可以工作。但我知道这和绑定有关,我会读到的。为了方便起见,我刚刚添加了几个对你有用的链接。