我们如何使Javascript数组不可变,就像我们有Object.freeze()方法的对象一样



例如:

const arr = [1,2,3];
arr.push(4);    //4
console.log(arr) //[1,2,3,4]

我希望这个数组是不可变的。它不应允许推送或添加/删除 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)

相关内容

最新更新