Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Элитного кода тред (https://javascript.ru/forum/offtopic/57197-ehlitnogo-koda-tred.html)

javaQest 11.08.2015 19:00

Erolast,
И кстати, че т я подумал, а какого хрена, ты вообще перезаписываешь прототип прототипа? Не факт, что там чего то не было до этого. Деструкция при множественном наследовании должна делаться явно. . Так что, не годен твой вариант.

Erolast 12.08.2015 07:48

Цитата:

Я, честно говоря и не знал, что null&&sоmething возвращает null, не логично это, сука
Такова особенность операторов || и && в JS: они возвращают не булево, а тот из операндов, который может быть приведен к требуемому булевому.

Цитата:

cтатические" св-ва нахер не упали
Поддержка статических свойств нужна для совместимости с классами ES6. Для себя ты можешь убрать этот код, но в моем примере он останется (он не только для тебя, все же).

Цитата:

Да, и вот еще что. Ты все равно не прав, со своим нулем. Если ты подаешь нуль, в качестве второго аргумента, у тебя прототип прототипа субкласса перезаписывается нулем. Это непредсказуемое, и неадекватное поведение.
Установка прототипа в null - это вполне себе классический, общеизвестный и даже прописанный в стандарте (http://www.ecma-international.org/ec...tionevaluation, пункт 6e) прием, использующийся для того, чтобы очистить объект от дефолтных методов, наследуемых из Object.prototype. А ты что, не знал?
Опять же, чисто для себя ты можешь наследование от null вырезать, но из примера я его убирать не буду.

Цитата:

И кстати, че т я подумал, а какого хрена, ты вообще перезаписываешь прототип прототипа? Не факт, что там чего то не было до этого. Деструкция при множественном наследовании должна делаться явно.
Чо? Прототип прототипа - это родитель. Функция inherits устанавливает (== меняет) родителя. Если у тебя класс уже наследовал от чего-то и ты решил функцией inherits назначить нового родителя, то перезапись его вполне логична.

И да, то, что в прототипе прототипа уже что-то было до этого - это факт. По умолчанию родителем любого класса является Object (Object.getPrototypeOf(Function.prototype) == Object.prototype).

javaQest 12.08.2015 09:35

Цитата:

Сообщение от Erolast
Чо? Прототип прототипа - это родитель. Функция inherits устанавливает (== меняет) родителя. Если у тебя класс уже наследовал от чего-то и ты решил функцией inherits назначить нового родителя, то перезапись его вполне логична.

И да, то, что в прототипе прототипа уже что-то было до этого - это факт. По умолчанию родителем любого класса является Object (Object.getPrototypeOf(Function.prototype) == Object.prototype).

объясняю популярно. У меня цепочка A->B->C->D->E, я захотел чтобы, E унаследовал от Z, сделав это, я потеряю, A->B->C, это разве не смешно? Мало того, ты неявно изменишь родителя D, и все классы и объекты, наследующие от D изменят свое поведение. Ты сам то веришь в бред, который ты несешь? Это очевидно даже школьнику. Зачем ты позоришься? Ну обосрался, признай ошибку, делов то.
Цитата:

Сообщение от Erolast
устанавливает (== меняет

устанавливать != менять
//fixed

ты должен дополнять в данном случае, ничего существующего не трогая и не ломая.

Остальные твои перделки меня не интересуют, есть они или нет, мне похеру, они роли не играют. Просто сделай мне то, на что ты подписался. Реализуй множественное наследование.

javaQest 12.08.2015 09:40

Цитата:

Сообщение от Erolast
Установка прототипа в null - это вполне себе классический, общеизвестный и даже прописанный в стандарте (http://www.ecma-international.org/ec...tionevaluation, пункт 6e) прием, использующийся для того, чтобы очистить объект от дефолтных методов, наследуемых из Object.prototype. А ты что, не знал?

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

javaQest 12.08.2015 09:45

Цитата:

Сообщение от Erolast
И да, то, что в прототипе прототипа уже что-то было до этого - это факт

Естественно, я имел в виду что-то отличное от Object. Не надо тут строить непонимающие глазки. Ты может и глуп, но не настолько чтобы этого не понимать.

Erolast 12.08.2015 11:12

Цитата:

ты неявно изменишь родителя D, и все классы и объекты, наследующие от D изменят свое поведение.
С какой стати?

Цитата:

ты должен дополнять в данном случае, ничего существующего не трогая и не ломая.
Нет. Если функция называется inherits - значит, она должна перезаписывать. Чтобы добавлять родителя, надо, чтобы функция называлась addParent.
Энивей, это не имеет никакого отношения к реализации множественного наследования. Такое ощущение, что ты понял, что проигрываешь, и просто пытаешься увести разговор в сторону.

Цитата:

Реализуй множественное наследование.
Оно уже реализовано.

javaQest 12.08.2015 11:49

Цитата:

Сообщение от Erolast
С какой стати?

по определению. потому что ты перезаписал прототип.
Цитата:

Сообщение от Erolast
Оно уже реализовано.

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

javaQest 12.08.2015 11:58

Erolast,
Кстати, че то обезьяны не видно. ИМХО, это не справедливо, что ты один отдуваешься, это же фактически, его позор а не твой, ты хоть что-то попытался напейсать, а от него мы тут ни строки внятного кода не видали. Как только запахло жареным, он прижух, хотя веселые картиночки выкладывает.

javaQest 12.08.2015 12:00

Erolast,
Он наверное сидит, и проклинает тебя, за то что ты свою обфучкацию расшифровал, и народ узрел истину:)

javaQest 12.08.2015 12:05

Цитата:

Сообщение от Erolast
Если функция называется inherits - значит, она должна перезаписывать. Чтобы добавлять родителя, надо, чтобы функция называлась addParent.

LOL, значит все дело в названии? Ну назови addParent, я разрешаю.


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