【发布时间】:2016-07-21 03:38:47
【问题描述】:
我观察到以下情况:
var o = {}; // empty JS object
var a = []; // empty JS array
o.myproperty = "I am property";
a.push("I am array element");
alert(o['myproperty']); // alerts "I am property"
alert(o.myproperty); // alerts "I am property"
alert(a[0]); // alerts "I am array element"
alert(a['0']); // alerts "I am array element"
/* Of course, accessing an array element using dot notation (e.g. a.0) would cause a
SyntaxError: Unexpected number (in JavaScript variable names cannot begin with numbers.)
*/
还有:
'myproperty' in o // evaluates to true
0 in a // true
'0' in a // true
delete o.myproperty; // true, o is now empty
delete o['myproperty']; // true, o is now empty
delete a[0]; // true, a contains now 1 undefined element
delete a['0']; // true, a contains now 1 undefined element
似乎将元素添加到数组实际上会在数组对象上创建一个编号属性,然后用于通过引用访问该元素。但是有些事情在这些 数组元素属性 上的作用与它们在普通对象属性上的作用不同(例如上面的删除)。所以...
TL;DR ... javascript 数组元素是否通过未见过的编号数组对象属性通过引用访问?
编辑 似乎是这样:Why is using "for...in" with array iteration a bad idea?
【问题讨论】:
标签: javascript arrays object properties element