Я столкнулся с following diagram, который выглядит довольно грязно.Дизайн: почему у JavaScript есть отдельные объекты Function и Object, и почему у них есть свои собственные объекты-прототипы?
Так вот идет мой вопрос:
Почему JavaScipt имеет отдельные функции и объект функция объекты (вместо того, чтобы, например, просто имея все, определенное на верхнем уровне точка пользователя к одному прототипу объекта Root, и с прототипом Root, указывающим на Root, который выглядит намного проще и более интуитивно понятным дизайном)?
Спасибо.
Извините за мое недоразумение. Теперь я понимаю:
У JavaScript есть примитивные типы данных и объекты. Примитивные типы данных: boolean, number, string, null и undefined. Когда это необходимо, первые три из рассматриваются как экземпляры Boolean, Number и String. Everything else - объект, включающий функции, массивы, регулярные выражения и даты . Функции могут использоваться как конструкторы или как обычные функции. Когда функция используется как конструктор, ее можно использовать для создания экземпляров объекта с помощью нового оператора. Прототип экземпляра экземпляра (доступ к которому осуществляется через свойство
__proto__
) устанавливается при создании экземпляра экземпляра объекта «prototype». Члены__proto__
используются для разрешения свойств через прототипную цепочку наследования.Поскольку функции являются более специализированными, чем объекты есть Function.prototype объект застрял в прототипе наследования цепи между функциями и объектом Object.prototype верхнего уровня. Функциональные и объектные конструкторы сами функции обычно не нужны, так как мы можем напрямую использовать ключевое слово функции и литералы объектов.
Поскольку экземпляры функций отличаются от экземпляров объектов. Это функции. – Pointy
Потому что объекты не должны быть исполняемыми по своей природе. –
Но я понимаю, что в JavaScript все - это объект и функция в одно и то же время. См. Это сообщение: http://markdalgleish.com/2012/10/a-touch-of-class-inheritance-in-javascript/ –