Object.keys vs hasOwnProperty

JavaScript performance comparison

Test case created

Preparation code

<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>
<script>
Benchmark.prototype.setup = function() {
    keys = null;
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

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

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

2 comments

AlexWindHope commented :

bullshit, whenever you can - use Object.keys, http://jsperf.com/object-keys-vs-hasownproperty

AlexWindHope commented :

ooops, wrong tab :)

Add a comment