JavaScript Patterns 2.4 For-in loop

it2022-05-05  145

Principle

Enumeration should be used to iterate over nonarray objects.It's important to use the method hasOwnProperty()when iterating over object properties to filter out properties that come down the prototype chain.  // the object var man = { hands: 2, legs: 2, heads: 1 }; // somewhere else in the code // a method was added to all objects if (typeof Object.prototype.clone = = = "undefined") { Object.prototype.clone = function () {}; } // 1. for-in loop for (var i in man) { if (man.hasOwnProperty(i)) { // filter console.log(i, ":", man[i]); } } /* result in the console hands : 2 legs : 2 heads : 1 */ // 2. antipattern: // for-in loop without checking hasOwnProperty() for (var i in man) { console.log(i, ":", man[i]); } /* result in the console hands : 2 legs : 2 heads : 1 clone: function() */

Call method off of the Object.prototype to avoid naming collisions that man object redefined hasOwnProperty. And use a local variable to cache it.

var i, hasOwn = Object.prototype.hasOwnProperty; for (i in man) { if (hasOwn.call(man, i)) { // filter console.log(i, ":", man[i]); } }

转载于:https://www.cnblogs.com/haokaibo/p/for-in-loop.html

相关资源:各显卡算力对照表!

最新回复(0)