Что это за высший объект?
Это объект, на который ссылается Function.prototype
, который также является функцией . Именно здесь функции получают свои свойства и методы от (call
, apply
, bind
, name
и length
).
Этот прототип объекта объект , на который ссылается Object.prototype
, который отвечает за основные свойства и методы объекта, такие как hasOwnProperty
и toString
, и, поскольку вы использовали его в своем примере, __proto__
(который доступен только через Интернет)функция обратной совместимости; не используйте ее, используйте Object.getPrototypeOf
).
Не должно ли Rabbit
наследоваться от Function
объекта, потому что это функция?
Нет, для этого Function.prototype
.
Давайте ненадолго отложим Function
, в частности. Предположим, у вас есть:
function Thingy() {
}
и
let t = new Thingy();
Object.getPrototypeof(t) === Thingy.prototype
будет истинным, потому что когда вы используете new Thingy
, результирующий объект получает объект, на который Thingy.prototype
указываеткак его прототип. Вот как функции конструктора и прототипы работают в JavaScript.
Function
- конструктор, который создает функции. Таким образом, эквивалент будет:
let Rabbit = new Function();
Object.getPrototypeOf(Rabbit) === Function.prototype
верно. Это также относится к функциям, которые, подобно вашему Rabbit
, не создаются с помощью new Function
.