Javascript - TypeError:Object [object Object]没有方法'forEach'

时间:2017-02-01 18:05:08

标签: javascript uncaught-typeerror

我正在我的代码中编写遥测功能。我正在使用MDN链接中提到的Performance.getEntriesByType()函数 - https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType。 根据链接,它提到该方法返回一个PerformanceEntry对象列表/空列表。 但是,当我在window.performance.getEntriesByType(type)方法的返回值上调用“forEach”方法时,我收到以下错误

TypeError: Object [object Object] has no method 'forEach'

怀疑的几点:

  1. 为什么我会收到错误'forEach'没有方法?
  2. 错误消息中的Object [object Object]意味着什么?

2 个答案:

答案 0 :(得分:2)

这意味着您尝试在没有forEach()方法的对象上调用forEach()方法。 forEach()Array.prototype上实现(意味着所有数组都有此方法),有些浏览器在DOM nodeList对象上实现它。但是,您要么尝试在另一种对象上使用它,要么在不支持它的浏览器中使用它。

performance.getEntriesByType()会返回list,这与Array不同,后者是forEach()的实现位置。

The page you referenced ,显示了如何在window.performance.getEntriesByType()电话中循环显示结果列表。

  // Use getEntries() to iterate through the each entry
  var p = performance.getEntries();
  for (var i=0; i < p.length; i++) {
    log("Entry[" + i + "]");
    check_PerformanceEntry(p[i]);
  }

答案 1 :(得分:0)

我个人遇到了Android设备上的一个错误,问题出在依赖关系的代码中,所以我无法改变它。我使用this polyfill来解决问题:

if (window.NodeList && !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = function (callback, thisArg) {
        thisArg = thisArg || window;
        for (var i = 0; i < this.length; i++) {
            callback.call(thisArg, this[i], i, this);
        }
    };
}