首页 > 解决方案 > 为什么以下原型声明不起作用?

问题描述

我已经声明了 Array 原型 myArrayMax 并且代码似乎在从 w3schools.com 上的其他资源重复验证后正确:

该代码用于查找给定数组中的最大数。

但是,它不起作用,并且控制台显示以下错误消息:

未捕获的 TypeError:points.myArrayMax 不是函数

我在这个原型声明中找不到问题

var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points.myArrayMax();

var len, max;

Array.prototype.myArrayMax = function() {
  len = this.length;
  max = -Infinity;
  while (len--) {
    if (this[len] > max) {
      max = this[len];
    }
  }
  return max;
}
<h2>JavaScript Array Sort</h2>

<p>The highest number is <span id="demo"></span>.</p>

标签: javascriptarraysprototype

解决方案


因为您在实际定义它Array.myArrayMax 之前尝试使用它。

var points = [40, 100, 1, 5, 25, 10];

var len, max;

Array.prototype.myArrayMax = function() {
  len = this.length;
  max = -Infinity;
  while (len--) {
    if (this[len] > max) {
      max = this[len];
    }
  }
  return max;
}

console.log(points.myArrayMax());


推荐阅读