我想向 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/