Which is faster: obj.hasOwnProperty(prop) vs Object.keys(obj).includes(prop)

Ethan Arrowood on January 29, 2018

I don't know how to test runtime speed but I'm interested in which of these methods would cause more overhead. Given an object with n properties... [Read Full]
markdown guide

I bet it has to be Object.hasOwnProperty.

Depending on the runtime implementation, Object in JavaScript should be somewhat similar to a HashMap. So a key lookup should be O(1). Array.includes on the other hand is obviously O(n). They really are not very comparable.

Object.hasOwnProperty would be more comparable to the in operator. in should be a little bit more complicated as it looks through the prototype chain as well. But for keys that are already attached to an Object, I suppose it should give a similar, if not the same, time complexity.


I like testing execution time with console.time(string) and console.timeEnd(string).

Though, as one could guess testing performance this way is a fail. It will give various results every time. You'd better use developer tools instead.

Anyway, Object.hasOwnProperty compared to prop in obj should be incredibly faster as the latter run through all the prototype chain of an object. I've run that tests on small objects and get what I expected.

code of conduct - report abuse