The Object.prototype.isPrototypeOf specification states that isPrototypeOf checks the chain, not just the parent:
Repeat
Let V be the value of the [[Prototype]] internal property of V.
if V is zero, return false
If O and V refer to the same object, return true.
Your statement is absolutely correct. The created prototype chain has the format:
obj => Object {name:"someValue"} => Object {} => null / \ | \ -- This guy is Object.prototype
You can test it using code by creating an object using Object.create and passing null as an argument.
var obj = Object.create(null); Object.prototype.isPrototypeOf(obj);
Here, since we are passing null , not an object, it itself does not have Object.prototype as a prototype, so we get false .
source share