我们如何使 Javascript 数组像我们拥有 Object.freeze() 方法的对象一样不可变?
How can we make Javascript arrays immutable like for Objects we have Object.freeze() method?
例如:
const arr = [1,2,3];
arr.push(4); //4
console.log(arr) //[1,2,3,4]
我希望这个数组是不可变的。它不应允许推送或 add/delete arr 值。
Object.freeze
在数组上工作得很好,因为数组也是对象:
const arr = [1,2,3];
Object.freeze(arr);
arr.push(4); // attempting to push throws
数组是个对象——所以它可以正常工作:
const arr = [1, 2, 3];
Object.freeze(arr);
arr.push(4);
arr[arr.length - 1] = 4;
索引赋值方法也失败:
const arr = [1, 2, 3];
Object.freeze(arr);
arr[arr.length - 1] = 4;
是的,你可以Freeze array
const arr = [1,2,3];
Object.freeze(arr)
arr.push(5);
注意:-会做浅冻结,
const arr = [1, 2, {key: 123}];
Object.freeze(arr)
arr[2].key = 'changed value'
console.log(arr)
例如:
const arr = [1,2,3];
arr.push(4); //4
console.log(arr) //[1,2,3,4]
我希望这个数组是不可变的。它不应允许推送或 add/delete arr 值。
Object.freeze
在数组上工作得很好,因为数组也是对象:
const arr = [1,2,3];
Object.freeze(arr);
arr.push(4); // attempting to push throws
数组是个对象——所以它可以正常工作:
const arr = [1, 2, 3];
Object.freeze(arr);
arr.push(4);
arr[arr.length - 1] = 4;
索引赋值方法也失败:
const arr = [1, 2, 3];
Object.freeze(arr);
arr[arr.length - 1] = 4;
是的,你可以Freeze array
const arr = [1,2,3];
Object.freeze(arr)
arr.push(5);
注意:-会做浅冻结,
const arr = [1, 2, {key: 123}];
Object.freeze(arr)
arr[2].key = 'changed value'
console.log(arr)