Having some spare time to play with the concole, so...

Function.constructor === Function; // true

Object.constructor === Function; // true;

Function instanceof Object; // true

Object instanceof Function; // true

Object instanceof Object; // true

Function instanceof Function; // true

Object.getPrototypeOf(Object) instanceof Object; // true

Object.getPrototypeOf(Function.prototype) === Object.prototype; // true

Object.getPrototypeOf(Function).constructor === Function; // true

Object.prototype.constructor === Object; // true

Object.getPrototypeOf(Object.getPrototypeOf(Object)).constructor === Object; // true

Object.getPrototypeOf(Object.getPrototypeOf(Object)).toString(); // "[object Object]" (okay, it's an object...)

Object.getPrototypeOf(Object.getPrototypeOf(Object)) instanceof Object; // false

Object.getPrototypeOf(Object.getPrototypeOf(Object)) instanceof Function; // false

Object.getPrototypeOf(Object).toString() === (function () {}).toString(); // true

Object.getPrototypeOf(Object) instanceof Function; // false

Object.prototype === Object.getPrototypeOf(Object); // false

Object.prototype === Object.getPrototypeOf(Object.getPrototypeOf(Object)); // true

And a less one...

Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Function.prototype) === Object.getPrototypeOf(Object.getPrototypeOf(Object)))).isPrototypeOf(Object.getPrototypeOf(Object))// true
Tags: javascript, WTF