Javascript 在这种情况下,如何理解array.foo?
我不知道如何理解这里的foo属性和数组。看起来foo属性被分配给了数组,但我认为它甚至不是有效的数组语法。有人能解释一下这个概念吗Javascript 在这种情况下,如何理解array.foo?,javascript,arrays,Javascript,Arrays,我不知道如何理解这里的foo属性和数组。看起来foo属性被分配给了数组,但我认为它甚至不是有效的数组语法。有人能解释一下这个概念吗 var arr = []; arr[0] = 'a'; arr[1] = 'b'; arr.foo = 'c'; console.log(arr) // ['a','b',foo:'c'] This isn't valid array, but Chrome doesn't show any error. console.log(arr.foo) // 'c'
var arr = [];
arr[0] = 'a';
arr[1] = 'b';
arr.foo = 'c';
console.log(arr) // ['a','b',foo:'c'] This isn't valid array, but Chrome doesn't show any error.
console.log(arr.foo) // 'c'.
console.log(arr.length); // 2, not 3
JavaScript数组是对象加上一些方法和一些涉及length
属性的魔法,因此可以为它们分配随机属性
不要
(如果您通过JSON运行这样一个数组,那么这些额外的属性将丢失。)
在这里,它很好地解释了为什么会发生这种情况,以及其他一些您可能不太常见的事情。如果有人使用
for in
循环或请求Object.keys()
。您可以尝试声明为“use strict”代码>位于第一行,可能会出现错误。