Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Небольшая репозитошка (https://javascript.ru/forum/offtopic/31846-nebolshaya-repozitoshka.html)

B~Vladi 24.09.2012 17:36

Цитата:

Сообщение от 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);
};


Так понятно?

B~Vladi 24.09.2012 17:58

Хватит тупить. Достал.

FINoM 24.09.2012 18:00

Цитата:

Сообщение от Maxmaxmахimus
Ну ка покажи как это выгладило бы с твоей твоей реализацией ООП

Я же показал. MyClass.num = 0; и инкрементировать при каждом вызове конструктора.

FINoM 24.09.2012 18:05

Цитата:

Сообщение от Maxmaxmахimus
Покажи код

Что непонятно?
Цитата:

Сообщение от B~Vladi
Хватит тупить. Достал.


FINoM 24.09.2012 18:09

Цитата:

Сообщение от Maxmaxmахimus
у тебя MyClass еще не существует когда определяются методы.

Да, и что?

FINoM 24.09.2012 18:15

ок

devote 24.09.2012 20:55

Вот вы развели дискуссию... Какая вообще разница в том кто как расширяет объекты, кому как удобно, благо JavaScript это с легкостью позволяет... И обкакивать тот или иной способ вообще не вижу смысла.

Цитата:

Сообщение от B~Vladi
Если нужно обратиться к свойству предка - значит наследование построено неверно, либо кривая реализация у перекрывающего свойства (это относится только к методам).

Я вот тоже тебя не понял? Речь то явно идет не о том что бы обращаться к родительским методам снаружи, а дело в том, что к свойствам предка может и часто нужно обращаться из самого класса перекрывателя свойств... То есть ребенок может обращаться к родительским свойствам, для этих целей во многих языках и используются конструкции parent, super и т.д.

А вот если нужно снаружи получить вызов родительского свойства, то это это уже конечно не правильно. И я так понимаю ты именно это и имел ввиду. В этом случае конечно же наследование будет построено не правильно.

devote 25.09.2012 02:34

Цитата:

Сообщение от Дзен-трансгуманист
значит у вас кривой дизайн.

речь не о моем дизайне... Читайте пост внимательнее и предложения до конца. А не вырезайте отрывки из него:
Цитата:

Сообщение от devote
А вот если нужно снаружи получить вызов родительского свойства, то это это уже конечно не правильно.


melky 25.09.2012 16:36

Цитата:

Сообщение от Дзен-трансгуманист
Я просто перефразировал принцип KISS по отношению к ООП.

где можно почитать про KISS в JS ?

B~Vladi 25.09.2012 18:04

Цитата:

Сообщение от devote
дело в том, что к свойствам предка может и часто нужно обращаться из самого класса перекрывателя свойств... То есть ребенок может обращаться к родительским свойствам, для этих целей во многих языках и используются конструкции parent, super и т.д.

Приведи пример, когда это нужно.


Часовой пояс GMT +3, время: 14:07.