一、如何判断this执行问题
1、在普通函数中this指向window
控制台输出如下:
2、在构造函数中this指向创建的对象
控制台输出如下:
3、方法调用中,this执行调用者对象
控制台输出如下:
4、箭头函数中的this是上下文中的this。
控制台输出如下:
二:如何改变this指向
改变this指向问题包括三个方法,分别是call(),apply(),bind()
它们是如何改变的呢?
1、call方法(第一个参数是指向的对象,用逗号分隔的n个参数)
控制台输入如下:
2、apply方法(第一个参数是指向的对象,第二个参数是一个数组)
3、bind方法返回值是函数
4、call、apply、bind 三者的区别是什么?
-
共同点:
1、都能改变 this 指向,第一个传递的参数都是 this 指向的对象。
2、三者都采用的后续传参的形式。
-
不同点:
1、call的传参是单个传递的,而 apply后续传递的参数是数组形式,而 bind没有规定, 传递值和数组都可以。 2、call和 apply函数的执行是直接执行的,而 bind函数会返回一个函数, 然后我们想要调用的时候才会执行。