You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中this指向疑问:为何console.log里的this不指向window?

问题解答
  • 首先明确核心:你代码里console.log('I am', this.firstName)中的this,不是console.log函数内部的this,而是它所在的superGreet方法执行上下文里的this。

  • 为什么superGreet里的this指向myName?
    这是JavaScript的隐式绑定规则:当函数作为对象的方法被调用时(比如myName.superGreet()),函数内部的this会自动绑定到调用这个方法的对象,也就是myName。

  • 再说说console.log自身的this:
    单独调用console.log(this)时,这个this才指向console对象(浏览器环境下),但它和你代码里参数位置的this完全是两回事。你代码里的this.firstName是在superGreet的作用域里,所以用的是superGreet绑定的myName对象。

  • 可以加两行代码验证:

    superGreet() {
      console.log(this === myName); // 输出 true,证明this是myName
      console.log(this === console); // 输出 false,证明和console无关
      console.log('I am', this.firstName);
    }
    

内容的提问来源于stack exchange,提问作者jay26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:14:53