var person={fname:"John",lname:"Doe",age:25};
person.fname; //it gives a output John
for (x in person)
{
alert(person[x]); //works fine
person.x; //incorrect why???
}
有人可以解释一下这背后的确切逻辑吗?
答案 0 :(得分:4)
var person = {fname:"John", lname:"Doe", age:25};
for (var x in person) {
alert(person[x]);
}
在循环中,x假设有三个不同的值: fname , lname 和 age 。通过执行person[x]
,您尝试访问三个不同的属性。这就像做person['fname']
,person['lname']
和person['age']
一样。它们与person.fname
,person.lname
和person.age
相同,它们是人物对象的已定义属性。如果您执行person.x
,则表示您正在尝试访问正确返回x
的未声明属性undefined
。
[]
的用法也称为括号表示法,这在迭代和其他事情的情况下是必需的,例如将动态属性设置为由用户输入给出的对象(例如),但它们的使用范围很大。
答案 1 :(得分:0)
这是因为Javascript无法决定是否要访问对象人员的x 属性(例如,如果person = {x:100,y:65}),或作为字符串 x。
的值的属性答案 2 :(得分:0)