2016-06-06 1 views
1

printPerson принимает объект в качестве аргумента, его цикл выполняет итерацию по всем его свойствам и судя по всему, распечатывает их все.Javascript Object.Property logging undefined

Как вы можете видеть, я зарегистрировал переменные person и property, и они работают нормально. person идентифицируется как объект и property как строка с правильным именем свойства, что указывает на то, что цикл также работает нормально. Но когда дело доходит до регистрации person.property, возвращаемое значение равно undefined.

Что мне не хватает?

var bob = { 
    firstName: "Bob", 
    lastName: "Jones", 
    phoneNumber: "(650) 777-7777", 
    email: "[email protected]" 
}; 

var mary = { 
    firstName: "Mary", 
    lastName: "Johnson", 
    phoneNumber: "(650) 888-8888", 
    email: "[email protected]" 
}; 

var contacts = [bob, mary]; 

function printPerson(person) { 
    for (property in person){ 
     console.log(person); 
     console.log(property); 
     console.log(person.property); 
    } 
} 

function list(){ 
    for (var i=0;i<contacts.length;i++){ 
     printPerson(contacts[i]); 
    } 
} 

list(); 

ответ

3

Вы должны использовать кронштейн обозначения при использовании переменных в качестве ключей:

console.log(person[property]); 

Вот соответствующие документы: MDN on Objects Properties