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. 显式绑定

可以通过 applycallbind 显示地修改 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。

参考