Losing This
In another context, this won't be reference to its object any more.
class Button
{
constructor(value) {
this.value = value;
}
click() {
console.log(this.value);
}
}
let button = new Button("hello");
setTimeout(button.click, 1000);
Bind
We might need to bind the method to object.
class Button
{
constructor() {
this.click = this.click.bind(this);
}
click() {console.log("Click")}
focus() {console.log("Focus")}
blur = () => {console.log("Blur")}
}
let button = new Button();
setTimeout(button.click, 1000);
setTimeout(button.blur, 1000);
setTimeout(button.focus, 1000);
setTimeout(
() => button.focus(), 1000
);
class User {
getName() {
return this.name;
}
}
let obj = new User();
let user1 = {name: "John"};
let user2 = {name: "Ana"};
console.log(obj.getName());
console.log(obj.getName.bind(user1)());
console.log(obj.getName.bind(user2)());