2015-05-13 2 views
0

Я пытаюсь написать обобщенный скрипт для цикла через массив объектов и возвращать значения свойств в каждом цикле. Вместо того, чтобы получить доступ к свойствам с помощьюДоступ к свойствам скрипта Javascript/Google Apps с помощью Object.keys TypeError

myArray[0].someProperty; 
myArray[0].anotherProperty; 

Я хранить имена свойств в массиве с помощью Object.keys (MyArray [0]). Однако во время выполнения я получаю TypeErrors. Может ли кто-нибудь сказать мне, что я делаю неправильно? Или есть способ, которым я могу узнать больше о том, что означает TypeError в этом контексте? Мой пример кода ниже:

// Film Class 
function Film(title, year, genre) 
{ 
    this.title = title; 
    this.year = year; 
    this.genre = genre; 
} 

function Main() 
{ 
    var films = []; 

    films.push(new Film("Furious Seven", 2015, "Action")); 
    films.push(new Film("The Matrix", 1999, "Sci Fi")); 
    films.push(new Film("Invictus", 2009, "Drama")); 

    var headers = Object.keys(films[0]); 

    Logger.log(headers[0]);   // title 
    Logger.log(films[0].title);  // Furious Seven 
    Logger.log(films[0].headers[0]); // TypeError: Cannot read property "0" from undefined. 
    Logger.log(films[0].(headers[0])); // TypeError: [object Object] is not an XML object. 
} 

ответ

1

При попытке извлечь значение свойства объекта, используя переменную для ссылки на ключ свойства, переменная, представляющая ключ должен быть заключен в квадратные скобки без точки

Logger.log(films[0][headers[0]]); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

+0

Ahah. Хорошо, что я никогда не видел обозначения кронштейна на любых языках раньше. Спасибо за решение + документация ScampMichael – onji

Смежные вопросы