我正在我的代码中编写遥测功能。我正在使用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'
怀疑的几点:
答案 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);
}
};
}