Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение прототипа через объект (https://javascript.ru/forum/misc/60478-opredelenie-prototipa-cherez-obekt.html)

callbackhell 02.01.2016 21:00

Keramet,
Особенно конструкторы будут Вам мешать при создании сабклассов. Тот пример котрый я привел, например, пишется с конструкторами через жопу и с кучей костылей. как-то так:)

Keramet 02.01.2016 21:02

Цитата:

Сообщение от callbackhell (Сообщение 402276)
Нет никакого нарушения цепочек. Вы сами же эти цепочки и реализуете, в этом и заключается Ваша реализация наследования.

ну насколько я понял, при обращении к свойству объекта, если это свойство не определено в этом экземпляре, оно (св-во) ищется по цепочке прототипов (вплоть до Object.prototype). Если и там нет - то выдается undefined. Я поэтому и считаю - что при нарушении цепочки можно получить не то, что ожидалось

callbackhell 02.01.2016 21:23

Keramet,
Еще раз повторяю, разрушить ничего нельзя, потому что ничего нет. Вы сами строите цепочки наследования. Это Ваша забота выстроить их так как нужно

Keramet 02.01.2016 21:31

Стоп! "Чуть по-медленнее, я запиСУЮ.."
Конструкторы и прототипы придумали для того, чтобы реализовать наследование в ДжС, т.к. он (ДжС) не поддерживает классы. правильно?

callbackhell 02.01.2016 21:36

Цитата:

Сообщение от Keramet
правильно?

Нет не правильно. Прототипное ООП не нуждается ни в каком синтаксисе для классов, для того чтобы ПОЛНОСТЬЮ поддерживать ООП-парадигму, в том числе и наследование. Прототип JS -- язык Self, язык более мощный чем JS, там ЕМНИП, поддерживается в том числе множественное наследование, и там нет синтаксиса для классов. Айк ввел new и некоторое другое дерьмо для того чтобы JS был похож на жабу, это был маркетинговый ход. И он сожалеет об этом, он писал это в своих воспоминаниях.

Keramet 02.01.2016 21:52

callbackhell,
меня учили, что ООП - это программирование, основными характеристиками которого является инкапсуляция, наследование и полиморфизм (я закончил ВУЗ лет 15 назад, может что-то изменилось:)) в классических ООП языках (джава, С++) для этих целей применяюстя классы. в ДжС классов нет, тут есть прототипы. правильно?

callbackhell 02.01.2016 21:55

Цитата:

Сообщение от Keramet
в ДжС классов нет, тут есть прототипы. правильно?

Сейчас уже есть, к сожалению. Но классы -- это лишняя сущность. К тому же они реализованы отвратительно, их лучше не использовать, если Вам нужна гибкость.
Цитата:

Сообщение от Keramet
в классических ООП языках

С этим тоже надо поосторожней. Вас в вузе не учили, кто ввел термин ООП? И как он относится к перечисленным Вами языкам. Я бы назвал это квазиооп.

Keramet 02.01.2016 21:58

Цитата:

Сообщение от callbackhell (Сообщение 402305)
Вас в вузе не учили, кто ввел термин ООП?

Берн Страуструп?

Keramet 02.01.2016 22:02

Цитата:

Сообщение от callbackhell (Сообщение 402305)
Сейчас уже есть, к сожалению.

я ни в одной книги не сталкивался. они (классы) уже в ES5 есть или их только планируют вводить?

callbackhell 02.01.2016 22:03

Цитата:

Сообщение от Keramet
Берн Страуструп?

Вы шутите?
Цитата:

I made up the term 'object-oriented', and I can tell you I didn't have C++ in mind

-- Alan Kay,
Вы по какой специальности учились? Филология?


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