Arrays Vue变异更改实例(MyArray到Array)

Arrays Vue变异更改实例(MyArray到Array),arrays,vue.js,vuex,Arrays,Vue.js,Vuex,我正在用我的类扩展内置数组 当我尝试将MyArr存储到Vuex时,我丢失了实例,得到了bultIn数组 怎么了 类MyArray扩展了数组{/*一些方法*/} 常量状态={ arr:新模块Operationarray(), } 常数突变={ setArr:(状态)=>{ console.log(state.arr instanceof MyArray);//false——为什么? 设arr=newmyarray(); log(MyArray的arr instanceof);//true——预期

我正在用我的类扩展内置数组 当我尝试将MyArr存储到Vuex时,我丢失了实例,得到了bultIn数组

怎么了

类MyArray扩展了数组{/*一些方法*/}
常量状态={
arr:新模块Operationarray(),
}
常数突变={
setArr:(状态)=>{
console.log(state.arr instanceof MyArray);//false——为什么?
设arr=newmyarray();
log(MyArray的arr instanceof);//true——预期
state.arr=arr;
console.log(state.arr instanceof MyArray);//false——为什么?
}
}

要使阵列具有反应性,Vue需要使用自己的版本修补各种方法,如
推送
弹出
。当触发反应性系统时,它们的工作原理与原始系统相同

为了快速实现此修补,Vue将阵列的原型切换到自己的扩展版本。见:

具体细节因浏览器支持而异


instanceof
操作符根据原型链确定其值。一旦Vue进行了切换,您的阵列将不再在其原型链中包含
MyArray

问题是Vue切换阵列的原因。不是关于反应性,流行音乐和音乐push@user1272025我的回答解释了Vue切换阵列的原因。