如果我有一个对象和函数
var obj {
"1234": {"example": "sample"},
"5678": {"example": "sample"}
}
function example(num, str) {
if obj[num].hasOwnProperty(str) {
//manipulate property
}
return obj;
}
然后稍后调用该函数,
obj(1234, "example")
为什么我必须写 obj[num] 而不是 obj.num?点表示法不应该是可接受的吗,因为传递的值始终是整数并且周围没有引号,即 obj.1234 可以工作,但 obj."string" 不行?
为什么我必须写 obj[num] 而不是 obj.num?
Because obj[num]
采取value of num
(例如,1234
) 并使用该值作为属性名称,但是obj.num
uses "num"
(字面意思)作为属性名称。括号与点是 JavaScript 解析器如何知道您何时按字面给出属性名称(点表示法)或使用要使用其结果的表达式(括号表示法)。
(旁注:当然,当我们这样做时foo[1]
,我们字面上的意思是财产1
in foo
。但从解析器的角度来看,我们在那里有效地使用了表达式。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)