Javascript: hiding prototype methods in for loop?
arrays, for-loop, javascript, loops, prototype
Solution
You can use JavaScript's hasOwnProperty method to achieve this in the loop, like this:
for(var key in arr) {
if (arr.hasOwnProperty(key)) {
...
}
}
Reference: This YUI blog article.
Problem
So lets say I've added some prototype methods to the Array class: ``` 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; } ``` then I create an associative array and attempt to loop through it's keys: ``` var arr = new Array(); arr['One'] = 1; arr['Two'] = 2; arr['Three'] = 3; for(var key in arr) alert(key); ``` this returns five items: ``` -One -Two -Three -containsKey -containsValue ``` but I want (expect?) only three. Am I approaching this wrong? is there a way to "hide" the prototype methods? or should I be doing something differently?