Javascript:在for循环中隐藏原型(prototype)方法?

标签 javascript arrays prototype loops for-loop

假设我已经向 Array 类添加了一些原型(prototype)方法:



Array.prototype.containsKey = function(obj) {
    for(var key in this)
        if (key == obj) return true;
    return false;
}

Array.prototype.containsValue = function(obj) {
    for(var key in this)
        if (this[key] == obj) return true;
    return false;
}

然后我创建一个关联数组并尝试遍历它的键:



var arr = new Array();
arr['One'] = 1;
arr['Two'] = 2;
arr['Three'] = 3;

for(var key in arr)
   alert(key);

这将返回五个项目:

  -One
  -Two
  -Three
  -containsKey
  -containsValue

但我只想要(预计?)三个。我接近这个错误吗?有没有办法“隐藏”原型(prototype)方法?还是我应该做些不同的事情?

最佳答案

您可以通过使原型(prototype)方法不可枚举来从另一端获得所需的结果:

Object.defineProperty(Array.prototype, "containsKey", {
  enumerable: false,
  value: function(obj) {
      for(var key in this)
        if (key == obj) return true;
      return false;
    }
});

如果您可以控制方法定义,特别是如果您无法控制其他人如何调用您的代码,这通常会更好,这是库代码开发中的常见假设。

关于Javascript:在for循环中隐藏原型(prototype)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107681/

相关文章:

javascript - 在异步函数中调用函数(渲染组件)

c - 如何检查输入何时超出二维数组列中的行?

javascript - 关于ajax/javascript/jquery页面数据结构的建议

Javascript:如果不用定义原型(prototype)方法也能实现继承,为什么还要使用定义原型(prototype)方法来继承?

javascript - 从 JavaScript 中的表单生成一系列随机数

JavaScript 显示隐藏

javascript - 在按键上,动态添加选项卡?

c - ANSI C - 获取每个数组的随机词

对象本身的 Javascript 原型(prototype)

javascript - 在Javascript构造函数中使用 'this'来访问属性