Acessando Propriedades de Objetos com Variáveis
Esse desafio me confunde. Desde em desafios anteriores com acesso a objetos. Eu li que os colchetes devem ser usados apenas quando há um espaço na propriedade que você precisa acessar. E agora, neste desafio, eles querem que eu use a notação de colchetes quando a propriedade não tiver um espaço
/ cc @ FreeCodeCamp / moderators
Alguém pode ajudar na triagem se as instruções precisarem de mais esclarecimentos? Posso ser tendencioso, mas eles parecem diretos para mim.
@ChrisKissoon A notação de colchetes é útil quando você precisa acessar uma propriedade cujo nome é coletado dinamicamente durante a execução do programa.
por exemplo
var obj = {
propName : "John"
}
function propPrefix(str) {
var s = "prop";
return s + str;
}
var someProp = propPrefix("Name")
console.log(obj[someProp]) // -> "John"
Podemos explicar esse conceito na descrição, se não for muito detalhado
Obrigado @ Emt-Ant, precisamos atualizar as instruções para mais esclarecimentos? Sua opinião?
@raisedadead @ Em-Ant,
Eu posso entender as confusões, imho atualizar com mais esclarecimentos parece uma boa ideia.
Para pessoas mais novas com um exemplo como este:
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
é fácil pensar: "Por que não fazer apenas myObj.propName, já que estamos fazendo a mesma coisa"
Novamente, o segundo exemplo:
var myDog = "Hunter";
var dogs = {
Fido: "Mutt",
Hunter: "Doberman",
Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"
faz a mesma coisa. Ele apenas anexa o valor a uma variável. Por que ainda precisamos de uma variável ?? Eu definitivamente acho que devemos adicionar como o que @ Em-Ant disse, um exemplo onde a variável é alterada dinamicamente. Porque se você está apenas definindo uma variável igual a uma string e usando a variável, não faz sentido. Seria mais prático usar apenas a notação de ponto. O desafio não faz sentido, a menos que você explique por que precisaríamos usar uma variável em primeiro lugar, em vez da notação de ponto. Portanto, meu voto é adicionar outro exemplo e esclarecer por que usar uma variável.
@IsaacAbrahamson obrigado.
Os contribuidores também precisam refatorar este desafio junto com Updating Object Properties
. Comente abaixo com refatoração sugerida para ambos antes de fazer uma solicitação de pull.
/ cc @erictleung pensamentos?
Verifique também @systimotic ' https://github.com/FreeCodeCamp/FreeCodeCamp/issues/12125#issuecomment -269246606
Olá @raisedadead ,
Ao ler todas as questões relacionadas às notações de objeto, entendi que não é óbvio para um iniciante. Eles pareciam diretos para mim. Para tornar ainda mais simples, como fazer essas alterações.
Acessando 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"
Não vejo nenhum problema com a atualização de objetos. Corrija-me se eu estiver errado.
Até eu estou pensando em adicionar o desafio de objetos aninhados. Deixe-me saber como posso ajudar a melhorar isso.
@raisedadead, vamos ver se consigo resolver esse problema de objeto.
Os contribuidores também precisam refatorar este desafio junto com
Updating Object Properties
. Comente abaixo com refatoração sugerida para ambos antes de fazer uma solicitação de pull.
Portanto, para o desafio inicial em objetos, "Construir objetos JavaScript" , o objeto de amostra tem todas as propriedades sendo strings. Talvez possamos adicionar outro objeto de amostra com diferentes propriedades tipadas, como
var sampleObject = {
property_1: "Green",
2: "Hal",
"property_3": "Lantern"
};
Isso _pode_ ser mais confuso, mas explora as possibilidades dos objetos, o que pode levar os campistas a investigar um pouco. Além disso, o código-semente para "Acessando Propriedades de Objetos com Variáveis" tem números como propriedades, que não foram mostrados nos três desafios anteriores sobre objetos.
Eu li que os colchetes devem ser usados apenas quando há um espaço na propriedade que você precisa acessar.
Isso pode ser corrigido alterando como eles são notação de colchetes é descrito em "Acessando propriedades de objeto com notação de colchetes" . As instruções
Se a propriedade do objeto que você está tentando acessar contiver um espaço, você precisará usar a notação de colchetes.
poderia ser alterado para algo como
Se a propriedade do objeto que você está tentando acessar contiver um espaço, você precisará usar a notação de colchetes. No entanto, você ainda pode usar a notação de colchetes em propriedades sem espaços.
E então podemos modificar o objeto de amostra para mostrar que você também pode ter propriedades sem espaços.
var myObj = {
"Space Name": "Kirk",
"More Space": "Spock",
"NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"]; // USS Enterprise
Para "Acessando Propriedades do Objeto com Variáveis" , gosto da sugestão de @Em-Ant para substituir, digamos, o primeiro exemplo, ou seja, remover
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
e movendo o exemplo de objeto dogs
como o primeiro exemplo e ter 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 o segundo exemplo.
Que tal dizer que a notação de colchetes é uma forma mais dinâmica de manipular objetos. Você pode usar strings que podem sair da maioria das regras de declaração de JavaScript, como começar com números e usar string a com espaços como nomes de propriedade. Você também pode colocar variáveis dentro de colchetes, permitindo que as propriedades sejam atribuídas imediatamente ou por meio de algum efeito colateral. Digamos, por exemplo, que você tenha um objeto em seu programa e não tenha certeza do que as propriedades precisam ser durante a criação, então permite que o programa as atribua durante o tempo de execução.
Comentários muito úteis
@ChrisKissoon A notação de colchetes é útil quando você precisa acessar uma propriedade cujo nome é coletado dinamicamente durante a execução do programa.
por exemplo
Podemos explicar esse conceito na descrição, se não for muito detalhado