簡體   English   中英

JavaScript:對象的奇怪行為

[英]JavaScript:strange behavior of Objects

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假定三個不同的值: fnamelnameage 通過執行person[x]您試圖訪問三個不同的屬性。 這就像在做person['fname']person['lname']person['age'] 他們是同樣的事情person.fnameperson.lnameperson.age ,其被定義的人對象的屬性 如果執行person.x ,則嘗試訪問未聲明的屬性x ,該屬性正確返回undefined

[]的用法也稱為括號符號 ,在迭代和其他情況下(例如,將動態屬性設置為用戶輸入給定的對象)是必需的,但是它們的使用范圍較大。

這是因為Javascript無法決定您是否要訪問對象person 的x屬性(例如,如果person = {x:100,y:65}) 還是字符串 x 的值

  • person [x]將對x求值
  • person.x將擁有財產x

person.fname將為您提供person對象的fname對象。

person.lname將為您提供person對象的lname對象。

person.age會給你age的對象person對象。

for (x in person)
      {
        alert(person[x]);    
      }

它將遍歷person對象。 person.x; “ x”是人員對象的未知屬性。

最好在這里這里通讀一些基本的javascript概念。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM