Object instanceof Function
It returns true because Object is an instance of Function. It's the object constructor. Call it as
Object({})
Looks like a function, doesn't it, and sure enough it is one. Has a call method and everything:
Object.call(0, {})
In the same vein,
Number instanceof Function // true
String instanceof Function // true
The confusion may arise from the natural tendency to think that Object instanceof Function means that objects are instances of functions. No, objects are not instances of functions, and Object instanceof Function does not mean that, it means that a very particular value whose name is Object is an instance of Function. Number instanceof Function does not mean that numbers are instances of functions, it means that the particular object named Number, the constructor for the number type, is an instance of a function, because is is:
Number(1)
It may be clearer to note that
String instanceof String // false
Date instanceof Date // false
because the String constructor is not a string--it's a function.
However,
Function instanceof Function // true
You may think that's obvious, but it's not because "functions are functions"--it's because the Function object is a constructor function (for functions).
By the same token
Object instanceof Object // true
may also seem obvious, but it's not because "objects are objects", but because the value named Object is a function which in turn are objects.
Objectis the constructor for objects, it's a function.