В JS только 5 примитивных типов не являются объектами: number, string, boolean, null и undefined. Но number, string и boolean имеют представляющие их объекты, в которые они могут быть сконвертированы js интерпретатором.
Функции так же являются объектами со свойствами и методами.
Что же такое объект? Объект - это просто набор именованных свойств.
Есть два основных типа объектов Native, предоставляемые стандартом ECMAScript и Host, предоставляемые средой, например, браузером.
В JS вы работаете только с объектами. Вы создаете пустой объект, когда вам это потребуется и добавляете к нему члены. Вы составляете объекты добавлением примитивов, функций или других объектов к нему как их свойства. Паттерн композиция, это то, что постоянно происходит в js.
Далее, прототипы будут рассмотрены подробнее, пока остановимся на том, что prototype - это объект, который имеет каждая функция.
Для запуска программ, написанных на JavaScript необходимая среда. Обычно, но не всегда, это браузер. Среда предоставляет специальные host объекты, которые не определены в спецификацией языка.