В консоли выполнил две команды на понимание кто кому прототип и получил дважды true. Хочу понимать в чем кроется секрет и кто кому из них прототип (предок) в JS
Function.prototype.isPrototypeOf(Object)
//true
Object.prototype.isPrototypeOf(Function)
//true
Дело в том, что Object и Function - это две функции (т.н. функции-конструкторы). А у любой функции в цепочке прототипов есть как Function.prototype, так и Object.prototype, ведь любая функция является объектом.
Если вы хотите проверить кто чей прототип - нужно с прототипами и работать:
Function.prototype.isPrototypeOf(Object.prototype) // false
Object.prototype.isPrototypeOf(Function.prototype) // true
В целом же цепочка прототипов выглядит вот так (протитипы внизу, производные от них объекты - вверху):
Function Object
\ /
\ /
|
Function.prototype
|
|
Object.prototype
Сборка персонального компьютера от Artline: умный выбор для современных пользователей