【问题标题】:Is it possible to iterate method object inside the for loop是否可以在 for 循环中迭代方法对象
【发布时间】:2020-11-27 14:48:53
【问题描述】:

我想知道为什么在迭代对象时使用for循环不显示方法。

请查看以下示例,其中方法 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])
  }
}

【问题讨论】:

  • 刚刚在浏览器中运行了您的代码示例:它确实将getFullList 列为函数。为什么不应该呢?你想达到什么目的?
  • 我无法复制。您问题中的 sn-p 确实打印了该方法。

标签: javascript for-loop object iteration


【解决方案1】:

根据您的问题,我猜您希望该函数会被实际调用。

为此,您需要检查 list[key] 的类型并实际调用函数

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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多