Javascript 冻结数组的元素

Javascript 冻结数组的元素,javascript,Javascript,我有一些基本元素的数组: const array = [1, 2, 3] 我希望能够暂时冻结此数组的元素,并防止其被修改。但一旦允许修改元素,就应该有一种方法来解冻该值 有没有办法做到这一点 对于那些将此问题标记为重复问题的人,请关闭主题: 问题在于冻结数组的元素,而不是整个数组。这不是关于冻结整个数组的问题的重复。如果不想冻结该值,则要冻结保存该值的属性(在您的情况下,数组的“1”属性)。您可以使用重新定义属性,而不使用可写标志。要使其再次可写,请使用可写:true重新定义它: const

我有一些基本元素的数组:

const array = [1, 2, 3]
我希望能够暂时冻结此数组的元素,并防止其被修改。但一旦允许修改元素,就应该有一种方法来解冻该值

有没有办法做到这一点

对于那些将此问题标记为重复问题的人,请关闭主题:


问题在于冻结数组的元素,而不是整个数组。这不是关于冻结整个数组的问题的重复。

如果不想冻结该值,则要冻结保存该值的属性(在您的情况下,数组的
“1”
属性)。您可以使用重新定义属性,而不使用
可写
标志。要使其再次可写,请使用
可写:true
重新定义它:

const数组=[1,2,3];
console.log(“A”,array.join(“,”);//1, 2, 3
//别动
Object.defineProperty(数组,“1”{
值:数组[1],
writable:false,//表示强调(这是默认值)
可枚举:正确,
可配置:true
});
console.log(“B1”,array.join(“,”);//1, 2, 3

数组[1]=42;// 您不希望冻结该值,而是希望冻结保存该值的属性(在您的情况下,数组的
“1”
属性)。您可以使用重新定义属性,而不使用
可写
标志。要使其再次可写,请使用
可写:true
重新定义它:

const数组=[1,2,3];
console.log(“A”,array.join(“,”);//1, 2, 3
//别动
Object.defineProperty(数组,“1”{
值:数组[1],
writable:false,//表示强调(这是默认值)
可枚举:正确,
可配置:true
});
console.log(“B1”,array.join(“,”);//1, 2, 3

数组[1]=42;//是否满足您的要求?我的想法是创建一个自定义对象,该对象包含基本值和布尔值locked,如果已锁定,则不允许更改,如果未锁定,则允许更改。@Leo的可能副本这不是重复,他不想冻结整个数组。@Andreas只有数组定义是常量。您仍然可以在JS中推送和弹出它的值。您无法重新分配到
array
,因此
array=[5]将出错。是否满足您的要求?我的想法是创建一个自定义对象,该对象包含原语值和布尔值locked,如果已锁定,则不允许更改,如果未锁定,则允许更改。可能重复@Leo这不是重复,他不想冻结整个数组。@Andreas只有数组定义是常量。您仍然可以在JS中推送和弹出它的值。您无法重新分配到
array
,因此
array=[5]将出错。一个特别的“谢谢”用于解释第一句中的术语。一个特别的“谢谢”用于解释第一句中的术语。