gpt4 book ai didi

javascript - 如何在 angular2 typescript 中正确执行 "bind"?

转载 作者:数据小太阳 更新时间:2023-10-29 06:00:08 31 4
gpt4 key购买 nike

我想使用一个 javascript 库,它需要像这样创建一个对象并绑定(bind)到它:

this.mystr = "hello";
this.webkitspeech = new webkitSpeechRecognition();
this.webkitspeech.onresult = function(evt) {
console.log(this.mystr); // this is undefined, even though I do have it defined
}

我通常会做一个.bind(this)

虽然在 typescript 中我想这样做:

this.mystr = "hello"
this.webkitspeech = new webkitSpeechRecognition();
this.webkitspeech.onresult = onresult;

onresult(event) {
console.log(this.mystr) // this is undefined, even though I do have it defined
}

.bind(this) 在此示例中不起作用。我该如何解决这个问题?除了执行 .bind(this) 之外还有其他选择吗?或者任何适用于 typescript 功能的东西?

最佳答案

在 TypeScript 和 ES6 中,绑定(bind)函数最方便的方法是使用 arrow function保留上下文:

this.webkitspeech.onresult = ($event) => { this.onresult($event) };

或者像这样使用bind:

this.webkitspeech.onresult = this.onresult.bind(this);

或者你可以像这样使用 TS 实例箭头函数(ES 类属性):

class MyClass() {
onresult = ($event) => {...}
...
this.webkitspeech.onresult = onresult;
}

类属性是stage 2 ES7 proposal今天在 TS 中得到支持。

See the documentation用于方法之间的一些比较。

关于javascript - 如何在 angular2 typescript 中正确执行 "bind"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45136680/

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