我是新來的JS,所以我有這個關於正確的方式來綁定引用的新手問題。例如,我在打字稿這行代碼:TypeError:不是函數。正確的方式來綁定這個。參考JS
this.socket.on('new_task').subscribe(this.newTask);
...
newTask(data) {
this.logEvent('new_task', data);
this.audio.playNewJob();
}
logEvent(event: string, data) {
console.log(this.TAG + event + ' triggered with received data: ' + JSON.stringify(data));
}
如果我會嘗試運行此,我將獲得:
TypeError: this.logEvent is not a function
如果我將變更爲:
this.socket.on('new_task').subscribe((data) => this.newTask(data));
一切都會正常工作,但它看起來像使用JS和TS功能的糟糕方式。這種情況下推薦的做法是什麼?我很感激這方面的一些鏈接。提前致謝。
的可能的複製[如何做的JavaScript關閉工作?](https://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – Hampus
當你通過'this.newTask'作爲回調引用,函數和'this'之間的關聯失去了;實際上從來沒有這樣的聯繫。 – Pointy
您是否嘗試過使用箭頭功能? '(data => this.newTask(data))' – Arg0n