JavaScript 中的 this,永远指向最后调用它的那个对象。
this
in JavaScript
var currentYear = {
yaer: 2019,
print: function () {
console.log(this);
}
};
currentYear.print() //
下面是几个改变 this 指向的 example:
ES6 Array function
let year = 2019;
let nextYear = {
year: 2020,
func1: function () {
console.log(this.year);
},
func2: function () {
setTimeout(() => {
this.func1()
}, 100);
}
};
nextYear.func2(); // 2020
new
Operator
let year = 2019;
function Func () {
this.year = 2018;
}
let lastYear = new Func();
console.log(lastYear.year); // 2018
apply
, call
, bind
let year = 2019;
let nextYear = {
year: 2020,
func1: function () {
console.log(this.year);
},
func2: function () {
setTimeout(function () {
this.func1()
}.apply(nextYear), 100);
// }.call(nextYear), 100);
// }.bind(nextYear)(), 100);
}
};
nextYear.func2(); // 2020
_this = this
let year = 2019;
let nextYear = {
year: 2020,
func1: function () {
console.log(this.year);
},
func2: function () {
let _this = this;
setTimeout(function () {
_this.func1()
}, 100);
}
};
nextYear.func2(); // 2020