gpt4 book ai didi

javascript - 为什么即使在 javascript 中将数组的长度属性设置为只读,其值也会发生变化?

转载 作者:数据小太阳 更新时间:2023-10-29 05:15:56 26 4
gpt4 key购买 nike

我在 chrome 的控制台中尝试了以下代码

var a = new Array(1,2,3,4);
a.length

这显示长度如预期的那样为 4。现在我尝试将长度属性设置为可写:false

Object.defineProperty(a, "length", {writable: false});
a[4] = 5;
a.length

即使属性设置为 writable:false,结果也是 5。那是怎么发生的?它不应该保持不变,因为它设置为只读(可写:false)吗?

最佳答案

Object.defineProperty(a, "length", {writable: false}); 只会影响将值直接分配给 .length 属性的方式。

var a = [1,2,3,4];

Object.defineProperty(a, "length", {writable: false});

a.length = 0;

console.log(a.length); // still be 4

关于javascript - 为什么即使在 javascript 中将数组的长度属性设置为只读,其值也会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16958163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com