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

Яростный Меч 03.01.2016 21:55

Цитата:

Сообщение от googlecallback (Сообщение 402442)
В чем гемор?

В самом простом случае вызов родительского метода выглядит так:
...
method1: function(...) {
  ParentClass.prototype.method1.call(this, ...);
},
...
вроде ничего страшного, но выглядит как-то не очень, и родительский класс напрямую упоминается, если менять, то по всему коду.

есть ещё всякие реализации классов, там этих проблем нет, но реализовано через костыли.

В новых классах всё просто:

...
method1: function(...) {
  super.method1(...);
},
...
и this передается как надо, и родительский класс не упоминается

Яростный Меч 03.01.2016 21:59

Цитата:

Сообщение от googlecallback (Сообщение 402446)
Классы нельзя считать первоклассными сущностями уже потому, что их протокол отличается от объектного.

не очень понял насчет "протокола", но классы можно передавать в параметры функций, возвращать через return, создавать "на лету". Вроде как этого достаточно для "объектов первого класса"

googlecallback 03.01.2016 21:59

Цитата:

Сообщение от Яростный Меч
В самом простом случае вызов родительского метода выглядит так:

Это какое то феерическое говно. Родительский метод наследуется, поэтому вызов foo.bar(), а внутри методов function(){this.bar()}. Не ожидал от вас такого даже, на первый вгляд мне показалось, что Вы разбираетесь.

googlecallback 03.01.2016 22:05

Цитата:

Сообщение от Яростный Меч
Вроде как этого достаточно для "объектов первого класса"

Первоклассные объекты языка -- да (да и то еще вопрос, ибо требуют строгого режима), но первоклассные объекты в смысле ООП -- нет. Напимер, строки -- тоже первоклассные объекты, но не полноценные.

vasa_c 03.01.2016 22:24

Я не часто на этом форуме бываю, но как я понял, здесь максимаксимус с самим собой дискутирует?

googlecallback 03.01.2016 22:26

vasa_c,
Ты даже до его уровня не дорос, не обольщайся

vasa_c 03.01.2016 22:28

googlecallback, да я разве где-то пытался утверждать обратное? упаси осподи.
Я просто поинтересовался, чтобы случайно не вляпаться.

googlecallback 03.01.2016 22:36

Цитата:

Сообщение от Яростный Меч
не очень понял насчет "протокола"

Грубо говоря, единый протокол означает поддержку единого интерфейса. Если, к примеру, Вы не можете сделать myClass.foo = bar, значит классы не поддерживают объектный протокол в полной мере


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