如果我这样写,我不能使用this
关键词
LoadDrawing(drawing_name) {
this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB,drawing_name);
}
LoadCB(drawing, drawing_name) {
if (drawing == null) {
return;
}
this.DrawingName = drawing_name;
drawing.SetParentElement("glg_area");
}
我不知道该通过什么
drawing & drawing_name
使用参数传递时得到相同的东西LoadDrawing(drawing_name) {
this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB(param1,param2),drawing_name);
}
最佳答案
您可以保留 LoadCB
的 this 绑定(bind)通过将其定义为箭头函数:
LoadDrawing(drawing_name) {
this.glg.LoadWidgetFromURL(drawing_name, null, this.LoadCB,drawing_name);
}
LoadCB = (drawing, drawing_name) => {
if (drawing == null) {
return;
}
this.DrawingName = drawing_name;
drawing.SetParentElement("glg_area");
}
请注意,这与 TypeScript 无关,而是与 ES6 JavaScript 类有关。
ES6 类方法对待
this
以与使用 function
定义的函数相同的方式绑定(bind)关键字确实 - 依赖于调用站点而不是函数的词法范围。箭头函数使用词法范围,因此保留了 this
在上述情况下具有约束力。
关于javascript - 如何将 JavaScript 函数转换为在 typescript 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59420145/