这个挑战使我感到困惑。 由于在以前的挑战与访问对象。 我读到方括号仅应在需要访问的属性中有空格时使用。 现在,在此挑战中,他们希望我在属性没有空格的情况下使用方括号表示法
/ cc @ FreeCodeCamp /主持人
如果说明需要更多说明,谁能帮助分类? 我可能有偏见,但对我来说似乎直截了当。
当您必须访问其名称在程序执行期间动态收集的属性时, @ ChrisKissoon括号表示法很有用。
例如
var obj = {
propName : "John"
}
function propPrefix(str) {
var s = "prop";
return s + str;
}
var someProp = propPrefix("Name")
console.log(obj[someProp]) // -> "John"
如果不太冗长,我们可以在说明中解释这个概念
感谢@ Emt-Ant,我们是否需要更新说明以进一步澄清? 你的意见?
@raisedadead @ Em-Ant,
我可以理解这些混乱之处,对imho进行更清晰的更新听起来是个好主意。
对于具有以下示例的新手:
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
容易想到,“为什么不做myObj.propName,因为我们在做同样的事情”
再次,第二个示例:
var myDog = "Hunter";
var dogs = {
Fido: "Mutt",
Hunter: "Doberman",
Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed);// "Doberman"
做同样的事情。 它只是将值附加到变量。 为什么我们甚至需要一个变量? 我绝对认为我们应该像@ Em-Ant所说的那样添加一个示例,其中变量是动态更改的。 因为如果您只是将一个变量设置为等于字符串并使用该变量,则它没有任何意义。 仅使用点符号会更实用。 除非您解释了为什么我们首先需要使用变量而不是点表示法,否则挑战就毫无意义。 因此,我的投票是增加另一个示例并阐明为什么使用变量。
@IsaacAbrahamson谢谢。
贡献者还需要与Updating Object Properties
一起重构这个挑战。 在提出拉取请求之前,请先在下面评论并建议对两者进行重构。
/ cc @erictleung有何想法?
另外请检查@systimotic'https : //github.com/FreeCodeCamp/FreeCodeCamp/issues/12125#issuecomment -269246606
嗨@raisedadead ,
通过阅读与对象表示法有关的所有问题,我了解对于初学者而言这并不明显。 他们对我来说直截了当。 为了使其更简单,如何进行这些更改。
访问对象:(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"
我看不到Updating Objects的任何问题。 如我错了请纠正我。
甚至我都在考虑添加嵌套对象挑战。 让我知道我如何可以帮助改善这一点。
@raisedadead让我们看看我是否可以解决此对象问题。
贡献者还需要与
Updating Object Properties
一起重构这个挑战。 在提出拉取请求之前,请先在下面评论并建议对两者进行重构。
因此,对于对象的最初挑战“构建JavaScript对象” ,示例对象的所有属性均为字符串。 也许我们可以添加另一个具有不同类型属性的示例对象,例如
var sampleObject = {
property_1: "Green",
2: "Hal",
"property_3": "Lantern"
};
可能更令人困惑,但它确实探索了物体的可能性,这可能会促使露营者进行一些调查。 另外,“使用变量访问对象属性”的种子代码以数字作为属性,这在之前的三个对象挑战中都没有显示。
我读到方括号仅应在需要访问的属性中有空格时使用。
可以通过更改“用括号表示法访问对象属性”中介绍的
如果您尝试访问的对象的属性中有空格,则需要使用方括号表示法。
可以更改为
如果您尝试访问的对象的属性中有空格,则需要使用方括号表示法。 但是,您仍然可以在没有空格的属性上使用方括号表示法。
然后,我们可以修改示例对象以显示您也可以具有不带空格的属性。
var myObj = {
"Space Name": "Kirk",
"More Space": "Spock",
"NoSpace": "USS Enterprise"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
myObj["NoSpace"]; // USS Enterprise
对于“使用变量访问对象属性” ,我喜欢@ Em-Ant的建议,例如替换第一个示例,即删除
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
并将dogs
对象示例作为第一个示例,并进行如下操作
var obj = {
propName : "John"
}
function propPrefix(str) {
var s = "prop";
return s + str;
}
var someProp = propPrefix("Name");
console.log(obj[someProp]); // "John"
作为第二个例子。
怎么说括号表示法是操作对象的一种更动态的形式。 您可以使用可以超出大多数JavaScript声明规则的字符串,例如以数字开头和使用带空格的字符串a作为属性名称。 您也可以将变量放在方括号内,以允许动态或通过某些副作用分配属性。 例如,假设您的程序中有一个对象,并且不确定在创建过程中需要的属性是什么,因此您允许程序在运行时分配它们。
最有用的评论
当您必须访问其名称在程序执行期间动态收集的属性时, @ ChrisKissoon括号表示法很有用。
例如
如果不太冗长,我们可以在说明中解释这个概念