Notación de punto y corchete
Estoy tratando de entender la diferencia entre la notación de punto y corchete. Mientras revisaba varios ejemplos aquí en SO y en algunos otros sitios, me encontré con estos dos ejemplos simples:
var obj = { "abc" : "hello" };
var x = "abc";
var y = obj[x];
console.log(y); //output - hello
var user = {
name: "John Doe",
age: 30
};
var key = prompt("Enter the property to modify","name or age");
var value = prompt("Enter new value for " + key);
user[key] = value;
alert("New " + key + ": " + user[key]);
El primer ejemplo devuelve y para ser indefinido si en la tercera línea reemplazo elobj[x]
conobj.x
. Por qué no"hello"
Pero en el segundo ejemplo la expresiónuser[key]
simplemente se puede reemplazar conuser.key
sin ningún comportamiento anómalo (al menos para mí). Ahora esto me confunde, ya que recientemente aprendí que si queremos acceder a las propiedades por nombre almacenado en una variable, usamos la notación de corchetes [].