JavaScript this 的指向

15 阅读1分钟

不同的场景,this 指代的含义不同,JS中的this关键字也是如此:

  • 在全局代码中使用this,指代全局对象

    在真实的开发中,很少在全局代码使用this

  • 在函数中使用this,它的指向完全取决于函数是如何被调用的

    调用方式示例函数中的this指向
    通过new调用new method()新对象
    直接调用method()全局对象
    通过对象调用obj.method()前面的对象
    callmethod.call(ctx)call的第一个参数
    applymethod.apply(ctx)apply的第一个参数

    通过 new 调用

image.png

直接调用

全局函数内部的this 指向 window image.png

对象调用

image.png 此时this 指向调用者obj

call

image.png

使用call 调用函数,可以修改this 指向,call 接受的第一个参数就是this指向

在函数中使用this,它的指向完全取决于函数是如何被调用的

image.png

如图f(),获取了obj的sayHi;

输出1: 指向调用者obj,

输出2: 指向调用者window this 只想取决于函数是如何被调用的