Home >Web Front-end >JS Tutorial >Adding Named Properties to JavaScript Arrays: Object Literal vs. Bracket Notation?
Adding Named Properties to Arrays: A JavaScript Quirk
In JavaScript, arrays can be manipulated in unexpected ways, including the ability to add named properties as if they were objects. This raises the question: Is there any fundamental difference between declaring an array with named properties using brackets vs. an object literal?
The short answer is: Yes, there is a difference.
While both methods superficially behave similarly and return the 'object' type when checked with typeof(), they differ in their underlying nature. Arrays are intended for numerically indexed data, while objects are designed for non-numeric keys.
To illustrate this distinction, consider the following:
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; alert(myArray.length);
This code will display '0', whereas one might expect it to display '2'. This is because the named properties added to the array do not affect its length property. Instead, they are treated as additional properties on the array object.
In contrast, an object literal declared with named properties would correctly reflect its length:
var myObject = {'A': 'Athens', 'B': 'Berlin'}; alert(myObject.length); // This would display '2'
Therefore, while it is possible to add named properties to arrays, it is considered an "abuse" and should be avoided. For non-numeric keys, it is best practice to use an object instead.
The above is the detailed content of Adding Named Properties to JavaScript Arrays: Object Literal vs. Bracket Notation?. For more information, please follow other related articles on the PHP Chinese website!