Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   СПБ: Требуется мега спец по JavaScript Prototype (вторично - PHP/SQL) (https://javascript.ru/forum/job/5095-spb-trebuetsya-mega-spec-po-javascript-prototype-vtorichno-php-sql.html)

tenshi 28.09.2009 10:44

реализация, я ж сказал...
:write:

ZoNT 28.09.2009 11:52

Цитата:

Сообщение от [DiMA
]Если вы считаете себя настоящим профессионам в плане ООП на JS и потому хотите для себя исключения

Гы-гы, профессиональному js-проггеру в виде исключения 50-60 тр? :lol:
Спасибо, поржал...

Riim 28.09.2009 19:10

tenshi, что плохо в реализации? Не подумай, что я пытаюсь спорить, просто интересно твое мнение, так как самому мне сравнивать не с чем, Python только собираюсь осваивать.

Gozar 28.09.2009 22:14

реализация как реализация, js - интересный язык и у него как и у всех других языков есть свои особенности.

tenshi 29.09.2009 00:23

в яваскрипте слишком много неконтролируемой магии..
* скрытая ссылка на прототип, которую можно получить только окольными путями, а изменить так вообще нельзя
* нельзя изменить итерируемость полей. вообще существование неитерируемых полей - гемор при рефлексии
* для каждого прототипа требуется функция-посредник, которая свяжет экземпляр с прототипом
афайк, функция+прототип - это самый настоящий класс, только в несколько извращённой форме. истинное прототипное наследование достигается только примесями.
* нельзя задать обработчик сообщения "метод не найден" (а в смалтолке и питоне - можно)

Riim 29.09.2009 02:55

Цитата:

Сообщение от tenshi
которую можно получить только окольными путями

есть же свойство "constructor", примерно так: exemplar.constructor.prototype .

Цитата:

Сообщение от tenshi
а изменить так вообще нельзя

а надо? Получится, что можно создать класс и изменять его родителя (родительский класс). Разве это по OOP-шному? Там вообще если подумать, много разных неправильных вещей можно будет делать.

Цитата:

Сообщение от tenshi
нельзя задать обработчик сообщения "метод не найден" (а в смалтолке и питоне - можно)

мелочь... Или нет?

Цитата:

Сообщение от tenshi
нельзя изменить итерируемость полей. вообще существование неитерируемых полей - гемор при рефлексии

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

upd: вот, кстати, еще мнение: http://krovosos.habrahabr.ru/blog/70314/. Правда, там не только прототипирование, скорее просто сравнительный обзор.

tenshi 29.09.2009 11:04

> есть же свойство "constructor", примерно так: exemplar.constructor.prototype

constructor указывает на конструктор прототипа. иногда конструктор экземпляра и его прототипа совпадают, а иногда - нет:

function HTMLString( ){ }
HTMLString.prototype= new String
alert( ( new HTMLString ).constructor.prototype === HTMLString.prototype )



> Разве это по OOP-шному?

да, ибо это объектно ориентированное программирование, а не классово ориентированное ;-)


> мелочь... Или нет?

нет. основа ооп: объекты обмениваются сообщениями и полностью вольны обрабатывать их так, как захотят. а в яваскрипте отсутствие метода вызывает исключение и пытается уронить всё приложение, что для пользовательского интерфейса не допустимо.

tenshi 29.09.2009 11:45

Цитата:

вот, кстати, еще мнение: http://krovosos.habrahabr.ru/blog/70314/
это высер дилетанта :nono:

e1f 29.09.2009 14:57

Цитата:

Сообщение от tenshi (Сообщение 31206)
это высер дилетанта :nono:

Мда, такое ощущение, что человеку надо было просто обосрать некий скриптовый язык, и под руку попался Ruby. JS для него -- мега круто... А Perl он похоже и в глаза не видел, раз такие заявления.

Riim 29.09.2009 20:15

Цитата:

Сообщение от tenshi
иногда конструктор экземпляра и его прототипа совпадают, а иногда - нет

приходится за этим немного вручную следить, на этапе описания класса. Часто создают обертку, которая сама как надо все делает. В общем, ситуация поправима.

Цитата:

Сообщение от tenshi
это высер дилетанта

Цитата:

Сообщение от e1f
Мда, такое ощущение, что человеку надо было просто обосрать некий скриптовый язык, и под руку попался Ruby. JS для него -- мега круто... А Perl он похоже и в глаза не видел, раз такие заявления.

ладно, вам виднее.


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