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的值的属性。