JavaScript this指向
本文将阐述 JavaScript 中的 this 指向问题。
一、什么是 this?
this 是 JavaScript 的一个关键字,它是运行时的一个参数。
this 并不等同于运行上下文,它只是运行上下文中的一个参数
二、this 的绑定规则
1. 默认绑定
直接调用函数,此时 this 默认指向 window。
1
2
3
4
5
6
7
function fun() {
console.log(this.name)
}
var name = 'window'
fun() // window
2. 隐式绑定
当函数被某个对象拥有,通过对象调用函数时,this 指向对象。
1
2
3
4
5
6
7
8
var obj = {
name: 'obj',
fun: function() {
console.log(this.name)
}
}
obj.fun() // obj
3. 显式绑定
可以通过 apply
、call
、bind
显示地修改 this 地指向。
4. 构造函数绑定
如果将函数作为构造函数使用,则 this 将指向新创建的对象。
1
2
3
4
5
6
7
function fun(a) {
this.a = a
}
var fun = new fun(2)
console.log(fun.a)
5. 箭头函数
箭头函数比较特殊,它的 this 是创建函数时的上下文中的 this。