Object.keys vs hasOwnProperty (v35)

Revision 35 of this benchmark created on


Setup

var i;
    var key;
    var keys;
    var l;
    var value;
    var hasOwnProperty = {}.hasOwnProperty;
    var parent = {};
    for (var i = 0; i < 10; i++)
      parent['x'+i] = i;
    var obj = Object.create(parent);
    for (var i = 0; i < 100; i++)
      obj['o'+i] = i;

Test runner

Ready to run.

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

Revisions

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