Freecodecamp: ¿Es desconcertante acceder a las propiedades de los objetos con variables?

Creado en 21 dic. 2016  ·  10Comentarios  ·  Fuente: freeCodeCamp/freeCodeCamp


Nombre del desafío


Acceder a las propiedades de los objetos con variables

descripcion del problema


Este desafío me confunde. Como en anteriores desafíos con el acceso a objetos. Leí que los corchetes deben usarse solo cuando hay un espacio en la propiedad al que necesita acceder. Y ahora, en este desafío, quieren que use la notación entre corchetes cuando la propiedad no tiene un espacio

help wanted

Comentario más útil

La notación
p.ej

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

Podríamos explicar este concepto en la descripción, si no es demasiado detallado

Todos 10 comentarios

/ cc @ FreeCodeCamp / moderators
¿Alguien puede ayudar en la clasificación si las instrucciones necesitan más aclaraciones? Puede que sea parcial, pero me parecen directos.

La notación
p.ej

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name")

console.log(obj[someProp]) // -> "John"

Podríamos explicar este concepto en la descripción, si no es demasiado detallado

Gracias @ Emt-Ant, ¿necesitamos actualizar las instrucciones para obtener más aclaraciones? ¿Su opinión?

@raisedadead @ Em-Ant,
Puedo entender las confusiones, en mi humilde opinión, actualizar con más aclaraciones suena como una buena idea.

Para las personas más nuevas con un ejemplo como este:

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

es fácil pensar, "¿Por qué no simplemente hacer myObj.propName ya que estamos haciendo lo mismo"

Nuevamente, el segundo ejemplo:

var myDog = "Hunter";
var dogs = {
  Fido: "Mutt",
  Hunter: "Doberman",
  Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"

hace lo mismo. Simplemente adjunta el valor a una variable. ¿Por qué incluso necesitamos una variable? Definitivamente creo que deberíamos agregar como lo que dijo @ Em-Ant, un ejemplo donde la variable se cambia dinámicamente. Porque si simplemente establece una variable igual a una cadena y usa la variable, no tiene ningún sentido. Sería más práctico usar la notación de puntos. El desafío no tiene sentido a menos que explique por qué alguna vez necesitaríamos usar una variable en primer lugar en lugar de la notación de puntos. Entonces mi voto es agregar otro ejemplo y aclarar por qué usar una variable.

@IsaacAbrahamson gracias.

Los colaboradores deben refactorizar este desafío junto con Updating Object Properties también. Comente a continuación con la refactorización sugerida para ambos antes de realizar una solicitud de extracción.

/ cc @erictleung pensamientos?

Hola @raisedadead ,
Al leer todos los problemas relacionados con las notaciones de objetos, entendí que no es obvio para un principiante. Me parecieron directos. Para hacerlo aún más simple, ¿qué tal hacer estos cambios?

Acceso a objetos: (https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12141)

var currency = {
   USA  : "dollar",
   London : "euro",
   India : "rupee",
}
function getCurrency(country){
 return country +" currency is "+currency[country] +" ";
}
getCurrency("USA") // "USA currency is dollar" 

No veo ningún problema con la actualización de objetos. Corrígeme si estoy equivocado.
Incluso estoy pensando en agregar el desafío Objetos anidados. Déjame saber cómo puedo ayudar a que esto mejore.

@raisedadead , veamos si puedo abordar este problema de objetos.

Los colaboradores deben refactorizar este desafío junto con Updating Object Properties también. Comente a continuación con la refactorización sugerida para ambos antes de realizar una solicitud de extracción.

Entonces, para el desafío inicial sobre los objetos, "Construir objetos JavaScript" , el objeto de muestra tiene todas las propiedades como cadenas. Tal vez podamos agregar otro objeto de muestra con diferentes propiedades escritas, como

var sampleObject = {
  property_1: "Green",
  2: "Hal",
  "property_3": "Lantern"
};

Esto _podría_ ser más confuso pero explora las posibilidades de los objetos, lo que puede incitar a los campistas a investigar un poco. Además, el código semilla para "Acceso a las propiedades de los objetos con variables" tiene números como propiedades, lo que no se ha mostrado en los tres desafíos anteriores sobre objetos.


Leí que los corchetes deben usarse solo cuando hay un espacio en la propiedad al que necesita acceder.

Esto podría solucionarse cambiando la forma en que se describen en la notación entre corchetes en "Acceso a las propiedades del objeto con la notación entre corchetes

Si la propiedad del objeto al que intenta acceder tiene un espacio, deberá utilizar la notación entre corchetes.

podría cambiarse a algo como

Si la propiedad del objeto al que intenta acceder tiene un espacio, deberá utilizar la notación entre corchetes. Sin embargo, aún puede usar la notación entre corchetes en propiedades sin espacios.

Y luego podemos modificar el objeto de muestra para mostrar que también puede tener propiedades sin espacios.

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock",
  "NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"];    // USS Enterprise

Para "Acceso a propiedades de objeto con variables" , me gusta la sugerencia de @ Em-Ant de reemplazar, digamos, el primer ejemplo, es decir, eliminar

var someProp = "propName";
var myObj = {
  propName: "Some Value"
}
myObj[someProp]; // "Some Value"

y mover el ejemplo del objeto dogs como primer ejemplo y tener algo como

var obj = {
  propName : "John"
}

function propPrefix(str) {
  var s = "prop";
  return s + str;
}

var someProp = propPrefix("Name");
console.log(obj[someProp]); // "John"

como el segundo ejemplo.

¿Qué le parece decir que la notación entre corchetes es una forma más dinámica de manipular objetos? Puede usar cadenas que se salgan de la mayoría de las reglas de declaración de JavaScript, como comenzar con números y usar la cadena a con espacios como nombres de propiedad. También puede colocar variables entre corchetes, lo que permite que las propiedades se asignen sobre la marcha o mediante algún efecto secundario. Digamos, por ejemplo, que tiene un objeto en su programa y no está seguro de cuáles deben ser las propiedades durante la creación, por lo que permite que el programa las asigne durante el tiempo de ejecución.

¿Fue útil esta página
0 / 5 - 0 calificaciones