Как объяснили другие, var self = this;
позволяет коду в замыкании ссылаться на родительскую область.
Однако сейчас 2018 год, и ES6 широко поддерживается всеми основными веб-браузерами. Идиома var self = this;
не так важна, как раньше.
Теперь можно избежать var self = this;
с помощью функций стрелок .
В тех случаях, когда мы использовали бы var self = this
:
function test() {
var self = this;
this.hello = "world";
document.getElementById("test_btn").addEventListener("click", function() {
console.log(self.hello); // logs "world"
});
};
Теперь мы можем использовать функцию стрелки без var self = this
:
function test() {
this.hello = "world";
document.getElementById("test_btn").addEventListener("click", () => {
console.log(this.hello); // logs "world"
});
};
Функции стрелок не имеют своих собственных this
и просто предполагают объем, в котором они заключены.