![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Replicator |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 30.4.2006 Где: Outer Heaven Репутация: нет Всего: нет |
Написал тут такой код:
В двух словах, код эмулирует классы. На мысль меня навела библиотека prototype, но мне их эмуляция показалась не совсем завершенной. Теперь новый класс (объект) можно создать так:
Наследование осуществляется так:
Вот именно из-за наследования я и начал писать эту библиотеку. По-моему, так гораздо проще и понятней наследовать классы (объекты). По крайней мере, для тех, кто перешел из традиционных ООП-языков. Но вот что меня интересует. Может, при таком "изврате" появляются какие-нибудь подводные камни. Пока их не видно, но когда начну что-нибудь мутить с прототипом, камни могут всплыть. Помогите потестить код и найти камни. А может, сразу косяк какой в глаза бросается? Ниже привожу полный код для тестирования.
--------------------
|
||||||||
|
|||||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Посмотрите еще в набла 40 - Наследование в JavaScript. В конце статьи приведен код класса, содержащего, в отличии от вашего нормальную реализацию конструкторов объектов, а не один на пучек, как у вас
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
Граждане, прекратите эмулировать то, чего нет в языке и чему есть достойная замена.
|
|||
|
||||
Replicator |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 30.4.2006 Где: Outer Heaven Репутация: нет Всего: нет |
Спасибо. Нужно будет добавить определение поля constructor, а то оно, действительно, не соответствует. Кроме того, я подумал, что создавать объекты можно просто вызовом функции:
без new. Так логичнее, по-моему. --------------------
|
|||
|
||||
Zeroglif |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
||||
|
||||
Replicator |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 30.4.2006 Где: Outer Heaven Репутация: нет Всего: нет |
Вот переделанный вариант:
Вот код для тестирования:
А вот код для тестирования из набла 40 - Наследование в JavaScript, немного переписанный для тестирования моего объекта:
Что я исправил:
--------------------
|
||||||
|
|||||||
dmage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 21.6.2007 Репутация: нет Всего: 1 |
А что является достойной заменой наследования в JavaScript? ![]() |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
Я не про наследование. Наследование в JS есть.
Я про эмуляцию класс-ориентированного подхода средствами прототипно-ориентированного языка. |
|||
|
||||
AlDev |
|
|||
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: нет Всего: 50 |
Replicator,
К сожалению не все так хорошо. Пример теста:
родительский testMethod - undefined. Что в Вашем коде, что в набле. |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |