Как мы знаем, все в Javascript наследует от Object
:
Так что, если я создаю объект с помощью функции конструктора, как показано ниже:
function Rabbit() {
this.color = 'White'
}
let obj = new Rabbit();
alert(Rabbit.__proto__ === Function.prototype) //true
alert(obj.__proto__ === Rabbit.prototype) //true
alert(obj.__proto__.__proto__ === Object.prototype) //true
alert(Function.__proto__ === Object.prototype) //false
alert(Object.getPrototypeOf(Function) === Object.getPrototypeOf(Object)) //true
Первые 3 результата имеют смысл, поскольку obj
наследует функцию Rabbit
, которая сама наследуется от Function
. Но если Function
наследует от Object
, то почему 4-й результат False
. Кроме того, почему у Object
и Function
один и тот же прототип (последний результат)?
Может кто-нибудь объяснить это поведение. Я что-то здесь упускаю?