JavaScript中如何将类变量正确初始化为空数组?
问题根因
你当前的写法定义的是实例属性,仅会挂载到类的实例对象上,直接通过类名Test访问的是类静态属性,因此返回undefined。
解决方案
分两种场景匹配你的需求:
场景1:需要每个类实例单独持有空数组默认值
保持构造函数的默认参数写法即可,访问时先创建类实例再读属性:
class Test { constructor(myArray = []) { this.myArray = myArray; } } // 正确访问方式 const test1 = new Test(); console.log(test1.myArray); // 输出 [] // 支持传入自定义数组初始化 const test2 = new Test([1,2,3]); console.log(test2.myArray); // 输出 [1,2,3]
该写法下每个实例的myArray相互独立,修改不会互相影响。
场景2:需要类本身持有全局共享的空数组默认值
使用static关键字声明类静态属性即可直接通过类名访问:
class Test { static myArray = []; } console.log(Test.myArray); // 输出 []
注意:静态属性为全环境共享的引用值,任意位置修改Test.myArray都会全局生效。
内容的提问来源于stack exchange,提问作者GriffsAccount
相关产品推荐
相关产品推荐

