Object.keys vs hasOwnProperty (v34)

Revision 34 of this benchmark created by Stephen Hardy on


Setup

var i;
    var key;
    var keys;
    var l;
    var value;
    var hasOwnProperty = {}.hasOwnProperty;
    var obj = { 'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'h':8, 'i':9, 'j':10 };

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
Object.keys(obj).forEach(function(key) { value = obj[key]; });
ready
Recursive loop
keys = Object.keys(obj); i = keys.length;
while (i--) { value = obj[keys[i]]; }
ready
For In
for (key in obj) { value = obj[key]; }
ready
For In HOP unsafe
for (key in obj) {
    if (obj.hasOwnProperty(key)) { value = obj[key]; }
}
ready

Revisions

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