Можно ли перебрать объект метода внутри цикла for - PullRequest
1 голос
/ 07 августа 2020

Я хотел бы знать, почему использование for l oop не отображает метод при итерации объекта.

Пожалуйста, проверьте ниже пример, где метод getFullList отсутствует в списке:

let list = {
  firstElement: "Element 1",
  secondElement: "Element 2",
  thirdElement: "Element 3",
  getFullList: function() {
    return this.firstElement + ', ' + this.secondElement + ', ' + this.thirdElement;
  }
};

for (let key in list) {
  if (list.hasOwnProperty(key)) {
    console.log(key + ' ' + list[key])
  }
}

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Судя по вашему вопросу, я предполагаю, что вы ожидаете, что функция действительно будет вызвана.

Для этого вам нужно проверить тип списка [ключ] и фактически вызвать функцию

const list = {
    firstElement: "Element 1",
    secondElement: "Element 2",
    thirdElement: "Element 3",
    getFullList: function() {
      return this.firstElement + ', ' + this.secondElement + ', ' + this.thirdElement;
    }
};

for (const key in list) {
    if (list.hasOwnProperty(key)) {
        const value = list[key];
        console.log(key + " " + value);
        if (typeof value === "function") {
            value();
        }
    }
}

Консольный вывод при регистрации функции в качестве значения «getFullList» будет примерно таким:

ƒ () {
      return this.firstElement + ', ' + this.secondElement + ', ' + this.thirdElement;
    }
0 голосов
/ 07 августа 2020

Вы можете использовать его как getter:

let list = {
  firstElement: "Element 1",
  secondElement: "Element 2",
  thirdElement: "Element 3",
  get getFullList() {
    return this.firstElement + ', ' + this.secondElement + ', ' + this.thirdElement;
  }
};

for (let key in list) {
  if (list.hasOwnProperty(key)) {
    console.log(key + ' ' + list[key])
  }
}
...