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

JavaScript类:构造函数定义的变量无法在类方法中访问

问题分析与解决办法

嘿,这问题我熟!你之所以拿到undefined,核心原因是构造函数里用let定义的name只是个局部变量——它只存在于构造函数的函数作用域里,和类的实例对象(也就是this)完全不沾边。所以当你在logName里访问this.name时,自然找不到这个变量,只能返回undefined啦。

解决方案1:把变量挂载到实例上(最常用)

如果这个name是属于每个实例的属性,那你应该把它赋值给this,这样类里的方法就能通过this访问到:

class Person {
  constructor(){
    this.name = 'Tom'; // 把name挂载到实例对象上
  }
  logName(){
    console.log(this.name); // 现在能拿到Tom啦
  }
}

let x = new Person();
x.logName(); // 输出:Tom

解决方案2:使用ES私有字段(更安全的私有属性)

如果你想让name成为类的私有属性(只能在类内部访问,外部拿不到),可以用ES6+的私有字段语法(前缀加#):

class Person {
  #name; // 先声明私有字段
  constructor(){
    this.#name = 'Tom'; // 给私有字段赋值
  }
  logName(){
    console.log(this.#name); // 类内部方法可以访问
  }
}

let x = new Person();
x.logName(); // 输出:Tom
// x.#name; // 外部访问会报错,保证了私有性

这样两种写法都能解决你遇到的undefined问题,看你需求选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:04:56