Показать сообщение отдельно
  #3 (permalink)  
Старый 13.01.2014, 17:24
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от Antonius
Но если метод будет вызван у класса-потомка, то данные будут инициализированы именно у него, а класс-предок о них ничего не узнает, верно?
this._data увидит значение в любом из прототипов цепочки.

Тут другой момент. Сначала надо разобраться, действительно ли _data должна быть в прототипе. Ведь в этом случае оно будет общее для всех экземпляров. Если это неправильно, то лучше присваивать в объект, а не в прототип: this._data = {}; - это будет работать одинаково для класса-предка и класса-потомка (я говорю о типе объекта).

Ну а если _data и вправду должна быть общей, то разница в работе будет: при вызове метода для объекта класса-предка создастся общая _data для всех, а в случае класса-потомка - только для классов-потомков, предки потом могут создать свою _data. Потому в этом случае правильнее явно указать имя класса:
MyObj.prototype._data = {};

Последний раз редактировалось Яростный Меч, 13.01.2014 в 17:50.
Ответить с цитированием