javascript中this指向问题

147 阅读1分钟

一、如何判断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函数会返回一个函数, 然后我们想要调用的时候才会执行。