Книга: JavaScript. Подробное руководство, 6-е издание
9.2.1. Конструкторы и идентификация класса
9.2.1. Конструкторы и идентификация класса
Как видите, объект-прототип играет чрезвычайно важную роль в идентификации класса: два объекта являются экземплярами одного класса, только если они наследуют один и тот же объект-прототип. Функция-конструктор, инициализирующая свойства нового объекта, не является определяющей: два конструктора могут иметь свойства prototype
, ссылающиеся на один объект-прототип. В этом случае оба конструктора будут создавать экземпляры одного и того же класса.
Хотя конструкторы не играют такую же важную роль в идентификации класса, как прототипы, тем не менее конструкторы выступают в качестве фасада класса. Например, имя конструктора обычно используется в качестве имени класса. Так, принято говорить, что конструктор Range()
создает объекты класса Range
. Однако более важным применением конструкторов является их использование в операторе instanceof
при проверке принадлежности объекта классу. Если имеется объект r, и необходимо проверить, является ли он объектом класса Range
, такую проверку можно выполнить так:
r instanceof Range // вернет true, если r наследует Range.prototype
В действительности оператор instanceof
не проверяет, был ли объект r инициализирован конструктором Range
. Он проверяет, наследует ли этот объект свойство Range.prototype
. Как бы то ни было, синтаксис оператора instanceof
закрепляет использование конструкторов в качестве идентификаторов классов. Мы еще встретимся с оператором instanceof
далее в этой главе.
- 9.2. Классы и конструкторы
- 3.4. Отношения между классами
- Глава 28 Идентификация и аутентификация пользователей
- Идентификация и аутентификация
- 9.1.2. Идентификация процесса: getpid() и getppid()
- 9.7.1. Определение подкласса
- Инварианты класса и семантика ссылок
- Реализация класса бинарных деревьев
- Определение членов класса
- Конструкторы
- 9.2.2. Идентификация группы процессов: getpgrp() и getpgid()
- Входная идентификация