由于ES6之后箭头函数的实现,个人也不太关注this的指向问题了,由于是为了自己的基础牢固一点,不是特别半吊子,还是写下this的指向问题
this的指向(不考虑严格模式)
1. 直接输出this,也就是全局下, this指向window
console.log(this)
// 打印出来是window
2. 在对象内部方法的this,指向调用这个方法的对象
下方就是一个很明显的例子, this指向了des
const dog = {
name: 'dog',
des: {
name: 'dog1',
sayName: function() {
console.log(this.name)
}
}
}
dog.des.sayName() // dog1
3. new 构造函数, this指向创建的对象
4. 如果是那种定时器,setTimeout,setInterval的话, this指向window
5. 如果需要更改this的指向,可以使用js的call,apply和bind方法
同时如果我们不想理解那么多的this的指向
我们可以全局都使用箭头函数,箭头函数会默认使用父级的this
还有一种之前在不使用es6情况下,使用其他变量赋值,暂存,也可以
比如 _this = this
以上差不多,有问题各位请指出,学习学习