为什么代理过的数据还是会被sort()修改掉呢;如果写法有问题,希望老师给出正确写法
来源:2-51 Schema Validation(2)

小马1992
2020-05-26
let obj = {
name: 'jack',
arr: [1, 3, 2]
}
let pro = new Proxy(obj, {
get(target, key) {
if (key === 'arr') {
return target[key] = target[key].sort()
}
}
})
console.log(obj.arr, '源数据1') //1 3 2
console.log(pro.arr, '代理数据')//1 2 3
console.log(obj.arr, '源数据2') //1 2 3
写回答
2回答
-
慕UI9336467
2020-07-28
let o = { name: "wang", plan: [1, 6, 3, 4, 2] }; let p = new Proxy(o, { get(target, p) { if (p === "plan"){ return [].concat(target[p]).sort(); }else { return target[p]; } } });
这样没问题
00 -
慕粉1926294646
2020-06-12
同学你在proxy中还是操作的target[key],这个是数组,数组是引用类型所以会改变呀。let pro = new Proxy(obj, {
get(target, key) {
if (key === 'arr') {
return target[key] = [].concat(target[key]).sort()
}
}
})012020-06-15
相似问题