类中的Javascript数组属性仅在从函数调用时返回

类中的Javascript数组属性仅在从函数调用时返回,javascript,node.js,Javascript,Node.js,const Color={ 红色:“红色”, 绿色:“绿色”, 蓝色:“蓝色”, 值:[this.RED,this.GREEN,this.BLUE], allValues(){ 返回[this.RED,this.GREEN,this.BLUE] } } console.log(Color.values);//[未定义,未定义,未定义] console.log(Color.allValues());//[“红色”、“绿色”、“蓝色”]这在对象文本中是不可能的。从文本创建对象实例时,此尚不可用。您可

const Color={
红色:“红色”,
绿色:“绿色”,
蓝色:“蓝色”,
值:[this.RED,this.GREEN,this.BLUE],
allValues(){
返回[this.RED,this.GREEN,this.BLUE]
}
}
console.log(Color.values);//[未定义,未定义,未定义]

console.log(Color.allValues());//[“红色”、“绿色”、“蓝色”]
这在对象文本中是不可能的。从文本
创建对象实例时,此
尚不可用。您可以创建并使用一些东西来初始化
,或者对
属性使用a(请参见答案),不过:

//初始化
常量颜色={
红色:“红色”,
绿色:“绿色”,
蓝色:“蓝色”,
init(){
this.values=[this.RED,this.GREEN,this.BLUE];
归还这个;
}
}.init();

console.log(Color.values)要回答此问题,可以通过


“使用对象文字语法时,无法在初始化期间引用对象。您需要在对象创建后引用该对象。”请参阅上面的链接。这与OP的allValues有什么不同method@Isaac因为从语法上讲,OP获得了调用属性而不是a函数的期望行为。嗯,初始化方法是一种有趣的方法,它解决了每次调用values()func时创建数组的问题。既然我是JS新手,这里的标准是什么?在这些场景中使用getter是否可以接受,因为有一种内置的方法可以做到这一点?就我个人而言,在这种情况下我会使用getter。只有在更复杂的情况下或在数据量巨大的情况下,初始化才可能更有效和/或更方便。。。詹姆斯:对不起,我构建了我的答案。我不确定我会买那个tbh,你的第一个答案是明确的“这不可能做到”,并提供了第一个解决方案作为解决办法,然后几分钟后“你可以使用一个getter”-你肯定在发布后看到了我的答案吗?它几乎是在同一时间发布的。它现在已经无关紧要了,但当已经有人提出它时,它并不是所有返工答案的粉丝。
const Color = {
  RED: 'red',
  GREEN: 'green',
  BLUE: 'blue',

  get values() {
    return [this.RED, this.GREEN, this.BLUE]
  }
}
...
console.log(Color.values); // ['red', 'green', 'blue']