En el siguiente ejemplo, estamos accediendo a las propiedades de un objeto, pero ¿por qué el acceso al objeto con Member Access genera un error?
var d = {a: 10, b: 20, c:30}; var keys = Object.getOwnPropertyNames(d); for(let i = 0; i < keys.length; i++){ console.log(d[keys[i]]); //console.log(d.keys[i]); //throws error } Por ejemplo, asumiría que esto se debe a que si accediéramos con el operador de acceso a miembros, intentaría acceder a d inmediatamente sin inicializar keys[i] . ¿Sería esto correcto ?
Al principio, se intenta acceder a d.keys y buscar el elemento en el índice i. Vea lo que sucede si hay un elemento dentro de d llamado claves:
var d = { a: 10, b: 20, c: 30, keys: [1, 2, 3, 4] }; var keys = Object.getOwnPropertyNames(d); for (let i = 0; i < keys.length; i++) { // console.log(d[keys[i]]); console.log(d.keys[i]); //works if finds any property named keys }