Таблица 8.1 Сравнение объектных систем языков на базе классов (Java)
и языков на базе прототипов (JavaScript)
Класс и экземпляр это разные сущности. | Все объекты являются экземплярами. | ||
Класс определяется в определении класса; инстанциация (создание экземпляров) производится методами-конструкторами. | Набор объектов создаётся и определяется функциями-конструкторами. | ||
Одиночный объект создаётся операцией new. | То же самое. | ||
Иерархия объектов создаётся через использование определения класса для определения подклассов существующих классов. | Иерархия объектов создаётся путём присвоения объекта как прототипа, ассоциированного с функцией-конструктором. | ||
Свойства наследуются по цепочке классов. | Свойства наследуются по цепочке прототипов. | ||
Определение класса специфицирует все свойства всех экземпляров данного класса. Свойства нельзя добавлять динамически на этапе прогона. | Функция-конструктор или прототип специфицируют начальный набор свойств. Свойства могут добавляться динамически отдельному объекту или целому набору объектов. |