Podemos asignar propiedades a una matriz, pero ¿por qué la longitud en este caso es 0? Ver el código adjunto
var person = [] person.fname = "Mr. Brown" person.lname = "White" person.length // gives 0 why?Ver la especificación :
La propiedad "longitud" de una instancia de Array es una propiedad de datos cuyo valor siempre es numéricamente mayor que el nombre de cada propiedad propia configurable cuyo nombre es un índice de matriz.
y
Un índice entero es una clave de propiedad con valor de cadena que es una cadena numérica canónica (ver 7.1.21) y cuyo valor numérico es +0𝔽 o un número entero positivo ≤ 𝔽(253 - 1). Un índice de matriz es un índice entero cuyo valor numérico i está en el rango +0𝔽 ≤ i < 𝔽(232 - 1).
Las matrices están diseñadas para contener una secuencia ordenada de valores representados por propiedades enteras ( 0 , 1 , 2 , etc.).
Si bien son objetos y, por lo tanto, puede empujar cualquier propiedad que desee sobre ellos, no es para lo que están diseñados.
La length está diseñada para contar la secuencia ordenada de valores. No es un recuento de todas las propiedades de cualquier nombre.
Array almacena elementos. Si desea llamar a person.name= "Mr.Brown", puede implementarlo de la siguiente manera:
//Initialize the variable let person = []; //Specify the object that will be pushed to the Array 'Person' let objectToPush = {name: 'Mr. Brown'}; //Push the object person.push(objectToPush); //Get Length console.log(person.length); //<--- Will return 1; //Call the name property inside the object console.log(person[0].name); //<-- returns 'Mr.Brown'