我有一个这样定义的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
,因此访问它始终是对相同结构的引用,并且不会有问题推动它。我是想念东西还是弄错了东西?
谢谢!
答案 0 :(得分:2)
它始终是对相同结构的引用
不,你改变了。由于Something.__someProperty__
,.slice(0)
评估为一个新的克隆数组。