Да, я тоже в итоге пришел к мнению, что лучше указывать имя класса (конструктора) явно, при рефакторинге вряд-ли оно потеряется и не будет переименовано, не буду раньше времени об этом беспокоиться.
Ситуация в целом такая: в прототипе в одном из полей есть объект с парами ключ-значение, которые представляют собой что-то вроде словаря, этот объект задан литералом и меняться, скорее всего, не будет (не могу придумать ситуацию, когда это понадобится). Типичное использование — взятие значения по ключу.
Тот метод, о котором я говорю, ищет имя ключа по значению. И чтобы избежать постоянного обхода объекта и поиска значений я хочу при первом обращении создавать «перевернутую» копию этого объекта, где ключами будут значения, а значениями — имена ключей из первого словаря. Таким образом при последующих обращениях можно будет снова обращаться просто по ключу как к полю объекта.
Поэтому и хочу сохранять данные в прототипе корневого класса — они общие для всех объектов этого типа. Если потомку понадобится модифицировать эти данные — он вполне сможет создать их копию у себя и модифицировать ее как угодно.
С другой стороны я только сейчас подумал, что в таком случае потомок может по неосторожности «испортить» данные родителя, но в любом случае этому помешать мы, кажется, не можем при классическом прототипном наследовании, остается надеяться на других разработчиков.
Вообще, такой подход как у меня имеет право на жизнь?
|