Сообщение от Zeroglif
|
instanceof не оправдывает своего названия буквально и является терминологической натяжкой из чужого class-based мира, в js объекты наследуют от объектов, понятия "класс" не просто нет, а если бы оно даже и было, то мы бы столкнулись с задачей определения, что включить в этот термин - прототип или прототипы, конструктор или конструкторы, или всё вместе, что участвовало в создании цепочки или её составляет, при этом, если цепь прототипов после содания хе-хе "instance" можно считать стабильной и связанной с ним, то свойству 'prototype' конструкторов можно присваивать другие значения, что делает алгоритм instanceof в этом случае бесполезным.
|
Почему же нельзя определить Класс как пару Конструктор + прототип ?
При этом оговориться что он определяет только Начальный (т.е. при его создании) тип экземпляра.
Включать в понятие
несколько конструкторов или
несколько прототипов не требуется, т.к. данный конструктор содержит вызовы родительских, а данный прототип из пары Конструктор-прототип - ссылку __proto__ на родительские прототипы , что однозначно определяет всю цепь наследования. Конечно возможны с помощью данного конструктора создание экземпляров с разным набором свойств в зависимости от заданных конструктору параметров , но тем не менее - другого начального создателя у экземпляра НЕТ.
Q: Как использовать
instanseof , если в текущий момент экземпляр уже на 100 км отличается от того, что использовался при его создании ?
A: Так же как и если бы он не отличался. Т.е., imho ,это вопрос вообще говоря о том, как вобще использовать instanceof в классическом ООП.