在Python中,有一种通用模式,其工作方式如下
class MyClass:
def __init__(self):
self._x = 0
def increment_and_print(self, i):
self._x = self._x + i
print(self._x)
instance = MyClass()
bound_method = instance.increment_and_print
在这里,bound_method
等效于功能lambda i: instance.increment_and_print(i)
,即它包含一个像闭包一样的实例对象。
现在我想知道打字稿是否也有类似的速记符号,即
class MyClass {
private _x : number;
constructor() { this._x = 0; }
incrementAndPrint(i: number) {
self._x += i;
console.log(self._x)
}
}
您是否只使用lambda函数来生成闭包(如Python中的“绑定方法”速记)?还是有另一种方法?
答案 0 :(得分:1)
是的,您可以使用bind做到这一点-函数是JavaScript中的第一类,因此您可以轻松地传递它们:
class MyClass {
private _x: number = 0;
incrementAndPrint(i: number) {
this._x += i;
console.log(this._x)
}
}
const myClass = new MyClass();
const incrementAndPrint = myClass.incrementAndPrint.bind(myClass);
incrementAndPrint(2);
incrementAndPrint(3);
您也可以使用箭头功能:
const incrementAndPrint = (num: number) => myClass.incrementAndPrint(num);