Как связать функцию как свойство объекта
У меня есть функция, которая принимает свойство объекта, в этом объекте я хочу передать функцию в качестве одного из свойств. Я хотел бы выполнить функцию, когда свойство вызывается. Мне нужно связать функцию, так как этот контекст теряется до того, как функция будет выполнена.
var myfunction = function () {
console.log("Something");
}
// this works
this.HeaderService.setState({
leftButton: {
click: this.myfunction.bind(this)
}
});
// can't get this to work
const self = this;
this.HeaderService.setState({
leftButton: {
click() {
return (function () {
console.log("something");
}).bind(this)
}
}
})
Я могу заставить выражение функции работать, но я не могу получить второй случай, когда я хочу определить функцию как значение щелчка свойства. Как мне это сделать?
1 ответ
Решение
Продолжая то, что @JamieTorres предложил, функция со стрелкой решает проблему
const self = this;
this.HeaderService.setState({
leftButton: {
click: () => {
return (function () {
console.log("something");
}).bind(this)
}
}
})