贝利信息

javascript中的‘this’是什么_它的指向如何确定【教程】

日期:2026-01-23 00:00 / 作者:幻影之瞳
普通函数调用时,this在非严格模式下指向window或globalThis,严格模式下为undefined;对象方法赋值后调用会丢失this;箭头函数继承外层this;构造函数需用new调用,否则this指向错误。

JavaScript 中的 this 不是定义时绑定的,而是调用时决定的——它永远指向函数执行时的“当前对象”,但这个“当前对象”并不总是你直觉认为的那个。

普通函数调用时,this 指向谁?

在非严格模式下,全局环境或独立调用函数(如 foo())时,this 指向 window(浏览器)或 globalThis(Node.js);严格模式下则为 undefined

对象方法中,this 为什么有时突然失效?

当把对象方法赋值给变量或作为回调传入(如 setTimeout(obj.method, 100)),this 会丢失原始绑定,退回到默认规则(即上一条)。

箭头函数没有自己的 this,那它怎么找?

箭头函数不创建自己的 this,而是沿作用域链向上查找,继承外层普通函数或全局作用域的 this 值。

构造函数和 class 中,this 指向实例,但要注意什么?

new Foo()class 实例化时,this 指向新创建的对象;但若忘记 new 直接调用,就退化成普通函数调用(严格模式下 thisundefined)。

真正难的不是记住规则,而是意识到:同一个函数,调用方式不同,this 就可能完全不同——而 JavaScript 不会在语法层面警告你这点。调试时多打 console.log(this),比背规则更管用。