28.09.2009, 10:44
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
реализация, я ж сказал...
__________________
.ня
|
|
28.09.2009, 11:52
|
Флудер
|
|
Регистрация: 25.07.2008
Сообщений: 1,271
|
|
Сообщение от [DiMA
|
]Если вы считаете себя настоящим профессионам в плане ООП на JS и потому хотите для себя исключения
|
Гы-гы, профессиональному js-проггеру в виде исключения 50-60 тр?
Спасибо, поржал...
|
|
28.09.2009, 19:10
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
tenshi, что плохо в реализации? Не подумай, что я пытаюсь спорить, просто интересно твое мнение, так как самому мне сравнивать не с чем, Python только собираюсь осваивать.
|
|
28.09.2009, 22:14
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
реализация как реализация, js - интересный язык и у него как и у всех других языков есть свои особенности.
|
|
29.09.2009, 00:23
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
в яваскрипте слишком много неконтролируемой магии..
* скрытая ссылка на прототип, которую можно получить только окольными путями, а изменить так вообще нельзя
* нельзя изменить итерируемость полей. вообще существование неитерируемых полей - гемор при рефлексии
* для каждого прототипа требуется функция-посредник, которая свяжет экземпляр с прототипом
афайк, функция+прототип - это самый настоящий класс, только в несколько извращённой форме. истинное прототипное наследование достигается только примесями.
* нельзя задать обработчик сообщения "метод не найден" (а в смалтолке и питоне - можно)
__________________
.ня
|
|
29.09.2009, 02:55
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от tenshi
|
которую можно получить только окольными путями
|
есть же свойство "constructor", примерно так: exemplar.constructor.prototype .
Сообщение от tenshi
|
а изменить так вообще нельзя
|
а надо? Получится, что можно создать класс и изменять его родителя (родительский класс). Разве это по OOP-шному? Там вообще если подумать, много разных неправильных вещей можно будет делать.
Сообщение от tenshi
|
нельзя задать обработчик сообщения "метод не найден" (а в смалтолке и питоне - можно)
|
мелочь... Или нет?
Сообщение от tenshi
|
нельзя изменить итерируемость полей. вообще существование неитерируемых полей - гемор при рефлексии
|
согласен, с хэшами еще много подобных моментов, которые мне не нравятся. На мой взгляд, здесь основные минусы javascript-а.
upd: вот, кстати, еще мнение: http://krovosos.habrahabr.ru/blog/70314/. Правда, там не только прототипирование, скорее просто сравнительный обзор.
Последний раз редактировалось Riim, 29.09.2009 в 02:59.
|
|
29.09.2009, 11:04
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> есть же свойство "constructor", примерно так: exemplar.constructor.prototype
constructor указывает на конструктор прототипа. иногда конструктор экземпляра и его прототипа совпадают, а иногда - нет:
function HTMLString( ){ }
HTMLString.prototype= new String
alert( ( new HTMLString ).constructor.prototype === HTMLString.prototype )
> Разве это по OOP-шному?
да, ибо это объектно ориентированное программирование, а не классово ориентированное ;-)
> мелочь... Или нет?
нет. основа ооп: объекты обмениваются сообщениями и полностью вольны обрабатывать их так, как захотят. а в яваскрипте отсутствие метода вызывает исключение и пытается уронить всё приложение, что для пользовательского интерфейса не допустимо.
__________________
.ня
|
|
29.09.2009, 11:45
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
это высер дилетанта
__________________
.ня
|
|
29.09.2009, 14:57
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Сообщение от tenshi
|
это высер дилетанта
|
Мда, такое ощущение, что человеку надо было просто обосрать некий скриптовый язык, и под руку попался Ruby. JS для него -- мега круто... А Perl он похоже и в глаза не видел, раз такие заявления.
|
|
29.09.2009, 20:15
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от tenshi
|
иногда конструктор экземпляра и его прототипа совпадают, а иногда - нет
|
приходится за этим немного вручную следить, на этапе описания класса. Часто создают обертку, которая сама как надо все делает. В общем, ситуация поправима.
Сообщение от tenshi
|
это высер дилетанта
|
Сообщение от e1f
|
Мда, такое ощущение, что человеку надо было просто обосрать некий скриптовый язык, и под руку попался Ruby. JS для него -- мега круто... А Perl он похоже и в глаза не видел, раз такие заявления.
|
ладно, вам виднее.
|
|
|
|