Javascript 为什么长度在数组对象中不显示为键?
因此,关于数组在java脚本中如何工作的问题,这里有一些行为Javascript 为什么长度在数组对象中不显示为键?,javascript,arrays,Javascript,Arrays,因此,关于数组在java脚本中如何工作的问题,这里有一些行为 var a = [1,2,3,4] Object.keys(a) >> ['0','1','2','3'] a['0'] >> 1 a.length >> 4 a.something = 'value' a >> [1,2,3,4] console.log(a) >> [1, 2, 3, 4, something: "value"] Object.keys(a) >&g
var a = [1,2,3,4]
Object.keys(a)
>> ['0','1','2','3']
a['0']
>> 1
a.length
>> 4
a.something = 'value'
a
>> [1,2,3,4]
console.log(a)
>> [1, 2, 3, 4, something: "value"]
Object.keys(a)
>> ['0','1','2','3','something']
a.something
>> 'value'
a.length
>> 4
a.length = 5
a
>>[1, 2, 3, 4, undefined]
console.log(a)
>>[1, 2, 3, 4, something: "value"]
Object.keys(a)
>> ["0", "1", "2", "3", "something"]
a.length = 'len'
> Uncaught RangeError: Invalid array length(…)
我的问题是,为什么“长度”在数组对象中不显示为键?它的作用类似于on,尽管它似乎被解析为int。如果它不是函数或键,它是什么?
length
是一个对象属性,可枚举
,设置为false
。因此,当您迭代它的键时,它将不会显示
var a=[1,2,3,4];
log(Object.getOwnPropertyDescriptor(一个“长度”);
// => ... enumerable:false…
如果您使用Object.getOwnPropertyNames()
,它会显示出来,它会获取所有非继承属性,而不管它们的可枚举设置如何。谢谢!这已经困扰我很长时间了。@lonewarrior556,没问题,我喜欢它,我自己也在读它:-)