Javascript - 原型(prototype)函数名称作为关联数组的键返回

标签 javascript arrays prototype-programming

我想向 javascript 的数组对象添加一个原型(prototype)函数。

我遇到的问题是,当我步进数组的键时,原型(prototype)函数的名称出现在数组的键中。

这是一个说明问题的示例:

<html>
  <head>
    <script type="text/javascript">
      Array.prototype.foo = function () {
        // do something
      }
      function keys() {
        var fruit = ["apples","pears","bannanas"];
        for (key in fruit) alert(key); // alerts: 0, 1, 2, foo
      }
    </script>
  </head>
  <body onload="keys();">
  </body>
</html>

关于如何解决这个问题有什么想法吗?

不必对函数进行原型(prototype)设计,但从可读性的 Angular 来看,我更愿意这样做。

编辑:需要明确的是,上述示例的实际实现是通过关联数组进行迭代的,因此使用了 for..in 循环

编辑:感谢大家的回复,但我认为你们错过了我想要的东西。我想知道的是,我是否可以将原型(prototype)函数添加到 javascript 的数组对象(或以不同的方式声明该函数,以产生相同的效果),而无需在通过 for 迭代数组时使函数名称向上倾斜..循环中。以indexOf函数为例。 Javascript 似乎在内部定义它的方式是它不会出现在对象/数组的键中(对吗?)。可以在运行时重现相同的行为吗?

最佳答案

您需要检查循环中是否有fruit.hasOwnProperty(key)

关于Javascript - 原型(prototype)函数名称作为关联数组的键返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966637/

相关文章:

javascript - 我想在不更改 alpha 值的情况下为像素着色。怎么办?这对我不起作用

javascript - 从数组 Javascript 获取数据

javascript - 查询在javascript中查找唯一数组

javascript - __proto__ 与 constructor.prototype 有何不同?

javascript - 我对 angularjs 嵌套 ajax 调用 [循环内循环] 的方法应该是什么?

javascript - jQuery 中表达式 ${variable_name} 的含义是什么?

php - 在codeigniter中从json数组中获取值

arrays - 从 plist 加载时基于 MapKit 的应用程序崩溃

JavaScript 继承 : when constructor has arguments

javascript - 为什么 boolean 原语不调用原型(prototype) toString()?