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???
}
有人可以解释一下这背后的确切逻辑吗?
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???
}
有人可以解释一下这背后的确切逻辑吗?
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 对象的定义属性。如果您这样做person.x
,您正在尝试访问x
正确返回的未声明属性undefined
。
的用法[]
也称为括号表示法,在迭代和其他事情的情况下需要它,例如为用户输入(例如)给定的对象设置动态属性,但它们的使用范围很大。
这是因为 Javascript 无法决定您是要访问对象 person 的 x 属性(例如,如果 person={x:100,y:65}),还是要访问字符串x的值的属性。