JS中this指向

2020-06-06  本文已影响0人  温室寻荒凉

(1)事件调用环境:谁触发事件,函数里面的this指向就是谁(某个DOM)。

(2)node全局环境:this指向module.exports

(3)浏览器全局环境:this指向window

(4)函数内部:

(4.1)函数自己调用(不是对象调用)严格模式下:undefined,非严格模式下 :this指向window

(4.2)函数被对象调用,this指向最终调用函数的对象。注意是调用时的,不是定义时的。

(4.3)构造函数中没有return语句,构造函数中的this指向的是实例对象

构造函数有return返回值,返回值类型为基本类型,构造函数中的this指向的是实例对象

构造函数有return返回值,返回值类型为引用类型,构造函数中的this指向返回值的对象

(5)箭头函数:箭头函数的上一层作用域的this

箭头函数本身是没有this和arguments的,在箭头函数中引用的this实际调用的是定义这个箭头函数的上一层作用域的this。这里强调一下是上一层作用域,因为对象是不能形成独立的作用域的。

修改this指向三种方法:

(1) call(this,a,b,c)

(2) apply(this,[a,b,c])

(3) bind(this,a,b,c)()

在定义箭头函数时已决定箭头函数中this指向,定义后想再通过call来修改函数中的this指向是做不到的,普通函数可以做到用call修改this指向。

脑图总结:

this指向

附一道经典面试题:

经典题目
上一篇 下一篇

猜你喜欢

热点阅读