Я знаю, что есть некоторые различия между обозначениями точек и кронштейнов, но для этой конкретной проблемы я немного смущен, почему точечная нотация не будет работать, а скобка будет работать.javascript - точка против записи в скобках в перечислении
var rockSpearguns = {
Sharpshooter: {barbs: 2, weight: 10, heft: "overhand"},
Pokepistol: {barbs: 4, weight: 8, heft: "shoulder"},
Javelinjet: {barbs: 4, weight: 12, heft: "waist"},
Firefork: {barbs: 6, weight: 8, heft: "overhand"}
};
function listGuns (guns) {
for(var speargun in guns){
console.log("Behold! "+speargun+", with "+ guns[speargun].heft +" heft!");
}
}
часть я немного запутался в guns[speargun].heft
это будет работать должным образом, но если я guns.speargun.heft
то будет неопределенным.
Так как свойства в скалеSpearguns - всего лишь одно слово, не должно gun.speargun
еще можно вызвать свойства тоже?
Я подумал немного был причиной, потому что теперь speargun
является строкой, если положить в gun.speargun
он фактически становится чем-то вроде gun."speargun"
, потому что при использовании брекет обозначений мы просто делаем gun[speargun]
вместо того, чтобы использовать gun["speargun"]
, потому что это будет просто сделать его двойной цитата, которая неверна.
Возможный дубликат [разница между обозначением точки и обозначением скобки в javascript] (http://stackoverflow.com/questions/20736758/difference-between-dot-notation-and-bracket-notation-in-javascript) – Xufox