ES6推送到静态数组属性

时间:2018-08-01 15:50:48

标签: javascript ecmascript-6

我有一个这样定义的ES6类

const myMixin = (SomeOtherClass) => {
  class Something extends SomeOtherClass {
    static get __someProperty__() {
      return SomeOtherClass.__someProperty__ ? SomeOtherClass.__someProperty__.slice(0) : [ SomeOtherClass.name ];
    }
  }
...

然后,如果我尝试将值推入该数组,然后记录其值,则它保持不变。

Something.__someProperty__.push('someValue');
console.log(Something.__someProperty__);
//output: ['SomeOtherClass'], instead of ['SomeOtherClass', 'someValue']

我会假设由于属性__someProperty__的值是在声明时分配的Array,因此访问它始终是对相同结构的引用,并且不会有问题推动它。我是想念东西还是弄错了东西?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

它始终是对相同结构的引用

不,你改变了。由于Something.__someProperty__.slice(0)评估为一个新的克隆数组。