数组的长度属性如何在javascript中工作?

mad*_*ox2 8 javascript arrays

在javascript中可以直接设置length数组的属性.例如,我可以像这样缩短数组:

var arr = [1, 2, 3, 4];
arr.length = 2;
console.log(arr); // Array [ 1, 2 ]
// arr[2], arr[3] are deleted
Run Code Online (Sandbox Code Playgroud)

我希望它length是只读的(例如在java中).

据我所知,javascript中的数组也是一个对象:

console.log(typeof [1, 2, 3]); // object
Run Code Online (Sandbox Code Playgroud)

length物业如何在引擎盖下工作?

Tus*_*har 5

Array.prototype.length是数组的可写属性.

MDN添加说明Array#length

您可以设置length属性以随时截断数组.通过更改其长度属性来扩展数组时,实际元素的数量不会增加; 例如,如果在当前为2时将长度设置为3,则该数组仍仅包含2个元素.因此,length属性不一定表示数组中定义的值的数量.

这可以用来缩短数组.


据我所知,javascript中的数组也是一个对象:

console.log(typeof [1, 2, 3]); // object
Run Code Online (Sandbox Code Playgroud)

检查为什么带对象的typeof数组返回"Object"而不是"Array"?