gpt4 book ai didi

javascript - 如何在 Typescript Angular 中调用另一个函数内部的函数

转载 作者:太空狗 更新时间:2023-10-29 17:35:29 28 4
gpt4 key购买 nike

我是 Angular 2 的新手。我在 Angular 中写了下面的代码

export class TestClass {

constructor() {
this.initMap();
}

initMap() {
this.marker.addListener('dragend', this.onMarkerDrop);
}

onMarkerDrop(event) {
this.functionTwo(); // Getting error this.functionTwo is not a function
}

functionTwo() {

}
}

注意:在问这个问题之前,我在 stackoverflow 中搜索了这些链接

'this.function' is not a function - OO JS

this.function is not a function :typescript

Angular - this.function is not a function

他们说使用箭头函数调用其他成员函数。但我不知道如何在我的代码中实现他们的建议。可能我没有正确理解它们。

我需要你的帮助,如何使用 functionOne() 中的箭头函数调用 this.functionTwo();

感谢您的帮助。

最佳答案

根据您的代码更新,您可以像这样使用它:

this.marker.addListener('dragend', this.onMarkerDrop.bind(this));
// OR
this.marker.addListener('dragend', ($event) => this.onMarkerDrop($event));

您的代码将 100% 正常工作:(问题更新前)

functionOne() {
this.functionTwo(); // Getting error this.functionTwo is not a function
}

functionTwo() {
alert('function2');
}

请检查以下代码以获得更多说明

functionOne() {
// this will throw error this.functionTwo is not a function
setTimeout(function(){ // normal function
this.functionTwo();
})

// This wont throw the error
setTimeout(() => { // fat arrow
this.functionTwo(); // Getting error this.functionTwo is not a function
})
}

functionTwo() {
alert('function2');
}

Why it will work with fat arrow :

this is picked up from surroundings (lexical). Therefore, you don’t need bind() or that = this, anymore.

With Normal function you need to do bind() or that = this

关于javascript - 如何在 Typescript Angular 中调用另一个函数内部的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com