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

为什么JavaScript中该函数的this关键字未出现重复引用报错?

问题核心原因

你的错误源于对this指向的逻辑误解:this绑定的是对象本身,不是变量名的字面量替换。

代码执行逻辑拆解

完整代码如下:

function makeUser() {
  return {
    name: "John",
    ref() {
      return this;
    }
  };
}

let user = makeUser();

alert(user.ref().name);

user.ref().name的执行会分成两个步骤:

  • 第一步执行user.ref():按照你学到的规则,调用方法时this指向.前面的user对象,所以ref执行后返回的就是user这个对象实体,不是变量名字符串"user"
  • 第二步拿第一步返回的user对象取name属性,等价于直接执行alert(user.name),自然能正常输出John,不会触发报错。

常见误区说明

你推导的alert(user.user.name)是错误的,本质是把this的指向当成了变量名的文本替换,实际上this是运行时绑定的对象内存引用,和变量名没有直接的字面替换关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:45:03