В JavaScript все равно Object
, потому что JavaScript является объектно-ориентированным языком. Function
является экземпляром Object
, потому что все является экземпляром Object
. Достаточно просто. Однако объекты, которые инициализируют другие объекты (конструкторы), также являются Function
s в JavaScript, поэтому было бы разумно, чтобы Object
также был Function
.
Подумайте об этом:
var obj = new Object();
Object
в данном случае используется как Function
, не так ли? Поэтому, хотя теоретически Object
должен быть объектом самого низкого уровня в языке, JavaScript не может функционировать без Function
s (каламбур!), Поэтому вам нужно, чтобы оба были на одном уровне. Object
должен быть экземпляром Function
, потому что это конструктор и ему нужно создавать больше экземпляров самого себя.
function FooBar() {}
Класс FooBar
выше является экземпляром Object
и Function
, потому что это оба. Та же логика применима ко встроенным объектам Object
и Function
; это примеры обоих.
Фу, сбивает с толку. Это имело смысл?