Are JavaScript Array Elements Nothing More Than Array Object Properties?
Solution 1:
Pretty much the only thing an Array
adds over an Object
is the .length
property, and a few array-specific methods like .push
. That's really it, under the hood an Array
is just an Object
. What really makes it usable as an array is said .length
parameter; it allows you to iterate the properties in an ordered manner with a for (i = 0; i < arr.length; i++)
loop. The .length
property is updated when you .push()
new elements into the array or when doing some other array-specific manipulations. And that's really all you need to make an object work as an indexed, ordered list.
Solution 2:
To make an accessor value an index in the array it should:
- Be a non-negative integer (
0
,1
,100
,200
); - If converted to a number (from a
string
), it should be a non-negative integer ('0', '1.000')
For example:
a['100'] // as index a[100]
a['0'] // as index a[0]
a[1.00] // as index a[1]
In all other cases the accessor is treated as a property of the array object:
a[-1] // as a property a['-1']
a['myProp'] // as a property a['myProp']
What makes the array different from regular objects: when using indexes the length
property is auto-updated. The length
should be always bigger by 1 than the highest index.
Solution 3:
Arrays are Objects, the simplest way to see it is [] instanceof Object
which returns true
.
And yes, Array elements are accessed by reference the same way Object properties are.
When you delete a property of an Object, you are actually setting this property to undefined, so it's the same for an object or an array.
Post a Comment for "Are JavaScript Array Elements Nothing More Than Array Object Properties?"