Object.keys vs hasOwnProperty (v19)

Revision 19 of this benchmark created by boa on


Preparation HTML

<script>
  var obj = {a:1,b:2,c:3,d:4,e:5,f:6,g:7,h:8,i:9,j:10};
  
  Object.defineProperty( obj, 'z', {value:26,enumerable:false} );
  
  var keys;
  var i;
  var name;
</script>

Setup

keys = null;

Test runner

Ready to run.

Testing in
TestOps/sec
hasOwnProperty
for (name in obj) {
  if (obj.hasOwnProperty(name)) {
    obj[name];
  }
}
ready
Object.keys
keys = Object.keys(obj);
for (i = 0; i < keys.length; i++) {
  obj[keys[i]];
}
ready
Object.keys with forEach
keys = Object.keys(obj)
  .forEach(function(key, i) {
    obj[key];
  });
ready
Object.keys with for()
for (name in obj) {
  if (obj.hasOwnProperty(name)) {
    obj[name];
  }
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.