【发布时间】:2017-02-24 23:58:50
【问题描述】:
我确实知道点符号和括号符号之间存在一些差异,但对于这个特定问题,我有点困惑为什么点符号不起作用而括号起作用。
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 那么它将是未定义的。
既然rockSpearguns中的属性都是一个词,gun.speargun不应该也能调出属性吗?
我认为这是原因,因为现在speargun 是一个字符串,如果放入gun.speargun,它实际上会变成gun."speargun",因为如果使用括号表示法,我们只需使用gun[speargun] 而不是使用@987654330 @ 因为这只会使它成为一个错误的双引号。
【问题讨论】:
标签: javascript object properties notation