Показать сообщение отдельно
  #11 (permalink)  
Старый 24.09.2012, 17:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Maxmaxmахimus
давай так давай называть поля полями, в полях могут быть свойства и методы. перепиши свое сообщение с этой терминалогиеу)
Нет, давай называть "свойства" - "свойствами", а не "полями".

Лучше я поясню на коде.

function Constructor () {}

Constructor.prototype.method = function (){}; // Наследуемое свойство method.

var object = new Constructor();
object.method = function (){}; // Наследуемое свойство перекрыто.

// Теперь при работе с объектом object нужно обращаться к свойствам напрямую:
object.method();

// но никак не:
object.constructor.prototype.method.call(method);
// Или через костыли, вроде твоего.


Подобные записи говорят о том, что наследование реализовано криво с точки зрения ООП. Потомок ничего не должен знать о своих предках, они умерли для него. У него есть только то, что он унаследовал или приобрел. Для того, что бы не копипастить реализации методов и при этом иметь возможность выполнять методы предков существует делегирование, которое реализуется в коде перекрываемого метода:

object.method = function (){
// some code
return this.constructor.prototype.method.call(this);
};


Так понятно?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием