我想看一些关于如何在ES6中使用.this的示例/说明遵循箭头函数语法以及它与ES5。这种绑定的不同之处。
答案 0 :(得分:0)
这很简单:
在ES6中,你有箭头函数是“匿名的”,因为它们没有适当的上下文。因此,this
指的是父上下文。
在ES5中,等价物是一个包含其自身上下文的函数。正确使用this
的方法(假设您需要父级的上下文)是这样绑定它:
function something() {//}
// invoke
something().bind(this);
答案 1 :(得分:0)
考虑es5中的以下功能:
// Scope Problem in es5 :
var defaultPower = "Laser Vision";
function superHero() {
this.defaultPower = "Ice Ray";
setTimeout(function grantPowers() {
console.log("Super " + this.defaultPower);
})
}
var IceMan = new superHero();
// Console logs erroneous "Super Laser Vision"
// Scope Fix in es5 by using self or _self or that var
var defaultPower = "Laser Vision";
function superHero() {
var self = this;
self.defaultPower = "Ice Ray";
setTimeout(function grantPowers() {
console.log("Super " + self.defaultPower);
})
}
var IceMan = new superHero();
// Console logs correct "Super Ice Ray"
并在es6中:
// And with arrow functions:
var defaultPower = "Laser Vision";
function superHero() {
this.defaultPower = "Ice Ray";
setTimeout(() => {
console.log("Super " + this.defaultPower);
});
}
var IceMan = new superHero();
// Console logs correct "Super Ice Ray"