|
|
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Мне вдруг стало интересно, одному мне это в js мешает при решении более-менее сложных задач: 1. отсутствие полноценного механизма наследования 2. отсутствие проверки на валидность переданных в функцию параметров 3. отсутствие возможности перегрузки методов (при разных входных параметрах разная логика) Ну то есть сочтёт ли кто-то полезным такой код? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Сейчас вот на основании написанного кода думаю как можно реализовать перегрузку методов (понятное дело полноценную сделать не получится, но возможно выйдет свинтить что-то удобное, что сможет восполнить отсутствие данного функционала). Сейчас готовы только первых 2 пункта. Используются приблизительно вот так: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Получим соответственно эксепшены, в случае, если переданные параметры не соответствуют ожидаемым. В общем, всё это не имеет особого смысла, и мне просто скучно было вчера и я начал фигнёй маяться? Или моя идея реально может быть полезной? (особенно ещё не реализованный третий пункт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 14:50 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрМне вдруг стало интересно, одному мне это в js мешает при решении более-менее сложных задач:Это мешает тем, кто не может избавиться от шаблонов ООП. Ты не один такой :) Более-менее сложные задачи нужно решать с помощью библиотек и фреймворков. Например, механизм прототипирования в ExtJS ничуть не хуже ооп-наследования. ПрограмёрНу то есть сочтёт ли кто-то полезным такой код?И таких кодов много, но широкого распространения они не получили. Програмёрособенно ещё не реализованный третий пунктПерегрузка это синтаксический прием, он имеет смысл лишь при поддержке на уровне синтаксиса самого языка. В js нельзя записать одновременно function xxx(a,b,c) и function xxx(x,y), в итоге будет видна только последняя функция. А это значит, что все равно придется вручную разруливать разную логику в рамках одной функции или разносить одноименные функции про разным областям видимости. И ради чего? Перегрузка призвана уменьшить количество писанины и сделать ее более прозрачной для понимания. А насильное внедрение ее видимости в js приведет к обратному. Если же хочется поиметь полноценные 1 и 2 пункты, советую посмотреть сюда . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 15:33 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Все недостатки надуманны 1. в JS присутствует полноценный механизм наследования. Другое дело что он в корне отличается от механизма в Java,C#,C++ 2. в JS нет строгой типизации т.е. если нет строгих типов данных то и проверять их не нужно можно накидать сверху костылей с проверкой типов но по моему не стоит (нужен конкретный пример на котором видно нужна ли проверка типов или же можно обойтись без нее) 3. опять же вопрос типов данных Имхо: на лицо попытка превратить JS в другой язык Имхо2: Нужно быть аккуратнее с Object.prototype. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 03:04 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Многие ответы на вопросы топикстартера есть в книге "JavaScript Шаблоны" Стоян Стефанов Если надо - пишите, поделюсь Стефанов С. JavaScript. Шаблоны. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 272 с., ил. ISBN 978-5-93286-208-7 Разработчики серверных, клиентских или настольных приложений на Java- Script нередко сталкиваются с проблемами, связанными с объектами, функци- ями, наследованием и другими особенностями этого языка. Какие же приемы разработки приложений на JavaScript являются наиболее удачными? Данная книга дает ответ на этот вопрос, предлагая большое количество различных шаб лонов программирования на JavaScript, таких как «единственный объект» (singleton), «фабрика» (factory), «декоратор» (deco rator) и другие. Можно ска- зать, что они являются не только методами решения наиболее типичных задач разработки ПО, но и заготовками решений для целых категорий таких задач. Использование шаб лонов при программировании на языке Java Script имеет свои особенности. Некоторые из них, разработанные с позиций языков со стро- гим контролем типов, таких как C++ и Java, не могут непосредственно приме- няться в языках с динамической типизацией, таких как Java Script. Для таких шаб лонов в языке Java Script имеются более простые альтернативы. Написанная экспертом по языку JavaScript Стояном Стефановым – ведущим специалистом компании Yahoo! и создателем инструмента оптимизации про- изводительности веб-страниц YSlow 2.0, – книга включает практические со- веты по реализации каждого из рассматриваемых шаблонов с примерами про- граммного кода. Автор также приводит антишаблоны – приемы программиро- вания, которых следует по возможности избегат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 11:00 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Малыхин СергейВсе недостатки надуманны 1. в JS присутствует полноценный механизм наследования. Другое дело что он в корне отличается от механизма в Java,C#,C++ 2. в JS нет строгой типизации т.е. если нет строгих типов данных то и проверять их не нужно можно накидать сверху костылей с проверкой типов но по моему не стоит (нужен конкретный пример на котором видно нужна ли проверка типов или же можно обойтись без нее) 3. опять же вопрос типов данных Имхо: на лицо попытка превратить JS в другой язык Имхо2: Нужно быть аккуратнее с Object.prototype. насчёт пункта 2 полностью верно. Как таковой он в принципе не сильно востребован... лишь иногда для защиты от глупой ошибки программиста (ну то есть, если пишущий не читает документацию по методам перед их вызовами). В основном это как предисловие к пункту 3 (ещё не знаю насколько он реализуем. Хочу, что бы было удобно и как уже написали, что бы это не приводило к написанию жутких невостребованных конструкций). А вот насчёт первого пункта. Может я не прав, но... насколько просто в js на прототипах создать такой конструктор, который бы в себе вызывал конструктор родителя с определённым перечнем аргументов? Насколько я знаю без дополнительных манипуляций этого сделать нельзя (то есть нету определённой в языке конструкции, которая позволила бы это сделать). Я не прав? Если прав, то тогда механизм наследования в js есть, и для большинства задач он достаточный, но всё же не полноценный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:00 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр, Вам не хватает другого языка! Вы пытаетесь натянуть парадигмы одного языка на другой - это как если бы вы к молотку пытались привинтить возможности топора! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:01 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
JavaScript не предназначен для монолитных приложений как другие языки - отсюда классовость как 5я нога у собаки! Используйте модули и extensions - в этом сила javascript. Рекомендую обратить внимание на кучу фреймворков, применяющих все прелести языка, для создания больших приложений - Backbone, Angular, Ember и другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:05 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
sp, под монолитными приложениями Вы что понимаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:16 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
spПрограмёр, Вам не хватает другого языка! Вы пытаетесь натянуть парадигмы одного языка на другой - это как если бы вы к молотку пытались привинтить возможности топора! ) Особых отличий в разных языках программирования нету )) Всё людьми ведь писано, и при том всё такими же программистами. А вот насчёт парадигмы... Не отрицаю, не хватает мне классового наследования в js. А про неудобство использования наследования на прототипах в js (для меня по крайней мере) я написал в прошлом сообщении. Можно использовать конечно фреймворки, разные модули и библиотеки... Но незачем это делать в случае, когда требуется лишь добавить мизерные изменения в обычный функционал. Это как например подключать jquery только потому, что в одной строчке вдруг потребовалось обратиться к элементу по селектору, или переносить сайт на yii или другой фреймворк только потому, что на сайте-визитке надо создать форму регистрации пользователей для механизма рассылок например. Понимаете о чём я? Вот мне обычно требуются лишь мизерные (описанные мной) изменения в стандартном функционале и синтаксисе js. Для этого использовать целые модули типа TypeScript (кстати, спасибо за ссылку, раньше слышал только про coffeScript или как то так) и потом искать софт, поддерживающий автодополнение и подсветку нового синтаксиса не вижу смысла. Потому то и решил несколько строчек написать "для души"... и подумал, а вдруг ещё кому пригодится... может кто ещё тот же дискомфорт в js ощущает, что и я. И может кто идейку подкинет какую. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:32 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр, validateArguments я бы на декоратор заменил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:35 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрМожет я не прав, но... насколько просто в js на прототипах создать такой конструктор, который бы в себе вызывал конструктор родителя с определённым перечнем аргументов? Насколько я знаю без дополнительных манипуляций этого сделать нельзя (то есть нету определённой в языке конструкции, которая позволила бы это сделать). Я не прав? Прав, без доп. манипуляций нельзя. Вот как это решается в TS: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. ПрограмёрЕсли прав, то тогда механизм наследования в js есть, и для большинства задач он достаточный, но всё же не полноценный.Нет наследования в js, есть прототипирование. Точка. Это все равно что сказать, что в js есть jquery. Любой механизм js-наследования — не В , а НА js. Малыхин Сергей 1. в JS присутствует полноценный механизм наследования. Другое дело что он в корне отличается от механизма в Java,C#,C++Такие бредовые высеры лишь запутывают понимание ситуации. В корне отличающийся механизм это прототип. У него есть собственное название, схерали называть его "наследованием"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 14:40 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёр, validateArguments я бы на декоратор заменил. Правильно понял? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. тогда объявление метода такое: Код: javascript 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 15:05 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyТакие бредовые высеры лишь запутывают понимание ситуации. В корне отличающийся механизм это прототип. У него есть собственное название, схерали называть его "наследованием"? Честное пионерское!!! на JavaScript можно создавать объекты на основании уже существующих просто добавляя в них свойства и методы. автор... насколько просто в js на прототипах создать такой конструктор, ... Опять же мышление из другой философии(языка программирования) ... Имхо в JS не стоит создавать новые объекты нужно расширять и изменять уже существующие т.е. использование конструктора подразумевает создание объекта а не изменение уже существующего т.е. попытка использовать классовый подход в прототипированном языке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 15:41 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Малыхин СергейAntonariyТакие бредовые высеры лишь запутывают понимание ситуации. В корне отличающийся механизм это прототип. У него есть собственное название, схерали называть его "наследованием"? Честное пионерское!!! на JavaScript можно создавать объекты на основании уже существующих просто добавляя в них свойства и методы. автор... насколько просто в js на прототипах создать такой конструктор, ... Опять же мышление из другой философии(языка программирования) ... Имхо в JS не стоит создавать новые объекты нужно расширять и изменять уже существующие т.е. использование конструктора подразумевает создание объекта а не изменение уже существующего т.е. попытка использовать классовый подход в прототипированном языке давайте так... просто нужна аналогия. вот пример классового наследования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Каким образом можно повторить данную структуру на прототипах? Ну то есть, что бы например вот это вернуло "2" Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 16:02 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Одному мне не хватает этого в js? Ага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 16:09 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Малыхин СергейAntonariyТакие бредовые высеры лишь запутывают понимание ситуации. В корне отличающийся механизм это прототип. У него есть собственное название, схерали называть его "наследованием"? Честное пионерское!!! на JavaScript можно создавать объекты на основании уже существующих просто добавляя в них свойства и методы.Ну и при чем тут наследование? Малыхин СергейИмхо в JS не стоит создавать новые объекты нужно расширять и изменять уже существующие т.е. использование конструктора подразумевает создание объекта а не изменение уже существующего т.е. попытка использовать классовый подход в прототипированном языке+1 Еще не стоит забывать, что в Java,C#,C++ и т.п. каждый класс является уникальным объектным типом, а ООП предлагает контроль и навигацию по этим типам (с помощью среды разработки), да и вообще существует, всего лишь ради одной цели — удобства разработки. JS слабо типизирован, контроль и навигация невозможны, следовательно все ооп-удобства вылетают в трубу, а вместо них появляется бахрома из всяких Код: javascript 1. 2. 3. 4. которая в ООП-языках плетется компилятором, а не разработчиком, и про которую нельзя забывать в js. Писанина должна стремиться к нулю, а функционал на ней основанный — к бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 16:28 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр давайте так... просто нужна аналогия. вот пример классового наследования: ... Каким образом можно повторить данную структуру на прототипах?Чем мой пример не подходит? Он описывает практически ту же самую структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 16:39 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
авторНу и при чем тут наследование? Просто я наивно полагал что наследование это механизм позволяющий создавать новый объект/класс на основе уже существующего просто добавив или изменив его свойства и методы. В прото языках используются реальные объекты для наследования В классовой модели наследуется описание классов родителей а не реальные объекты Это разные подходы к наследованию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 17:11 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Малыхин СергейавторНу и при чем тут наследование? Просто я наивно полагал что наследование это механизм позволяющий создавать новый объект/класс на основе уже существующего просто добавив или изменив его свойства и методы."Наследование" слишком увязло в ООП, и при его употреблении слишком сильны ассоциации с ООП, которые подсознательно тащат в js ооп-шаблоны разработки. Однако вменяемого термина для js нет, а мое "прототипирование" даже с точки зрения русского языка выглядит коряво. В википедии используется словосочетание "прототипное наследование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 17:47 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёрнасколько просто в js на прототипах создать такой конструктор, который бы в себе вызывал конструктор родителя с определённым перечнем аргументов? Насколько я знаю без дополнительных манипуляций этого сделать нельзя (то есть нету определённой в языке конструкции, которая позволила бы это сделать).конструкция есть, но весьма длинная: http://javascript.ru/tutorial/object/inheritance#vyzov-roditelskih-metodov только в функции extend (см. выше) надо ссылку на родительский прототип сделать. главный минус - в таких вызовах упоминается имя класса, его сложно будет поменять. а в остальном, каких-либо существенных недостатков такое наследование не имеет. вообще, из ООП в js нет только инкапсуляции, приватных частей класса. оное можно сделать замыканием, но тогда придется забыть о прототипах. впрочем, инкапсуляция есть самый бесполезный компонент в ООП, вопрос решается соглашением об именованиях, "_" в начале и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 18:29 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyПрограмёр давайте так... просто нужна аналогия. вот пример классового наследования: ... Каким образом можно повторить данную структуру на прототипах?Чем мой пример не подходит? Он описывает практически ту же самую структуру. теоретически вполне подходит. А вот на практике )) ЭТО ЖЕ НЕ УДОБНО!!! Как по мне, то это ооооочень не удобно (если реализовывать это всё вручную, а не доверять TypeScript'у) :) Я понимаю, что в TypeScript всё по фэншую. Но в самостоятельной реализации, разве моя this.ext чем-то уступает приведённой реализации в функционале? При том, что в разы прозрачнее работает (любой начинающий освоит принцип) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 18:32 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Наследование не нужно, вот например один из подходов миксы http://jslang.info/blog/2012/functional-mixins Валидацию параметров просто сделать метапрограммингом, но вообще это не нужно Мультиметоды были бы классны, их не хватает, их можно сделать метапрограммированием, но в ущерб производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 19:23 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрskyANAПрограмёр, validateArguments я бы на декоратор заменил. Правильно понял? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. тогда объявление метода такое: Код: javascript 1. 2. 3. 4. 5. 6. 7. Правильно. Вот только зачем её в прототип запихивать, не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 20:42 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
privateНаследование не нужно, вот например один из подходов миксы http://jslang.info/blog/2012/functional-mixins Валидацию параметров просто сделать метапрограммингом, но вообще это не нужно Мультиметоды были бы классны, их не хватает, их можно сделать метапрограммированием, но в ущерб производительности. ну вот с мультиметодами реализация Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. Пока только одна проблема - это лишние данные в свойстве trace ошибки. Ну по сути, если посидеть, я думаю это решаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 20:54 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёра не доверять TypeScript'уНет причин ему не доверять. Програмёр ЭТО ЖЕ НЕ УДОБНО!!!О чем я и говорю. Вопросы удобства (в том числе) как раз и решает TS на синтаксическом уровне. В википедии есть более выхолощенный пример: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 21:17 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyПрограмёра не доверять TypeScript'уНет причин ему не доверять. Програмёр ЭТО ЖЕ НЕ УДОБНО!!!О чем я и говорю. Вопросы удобства (в том числе) как раз и решает TS на синтаксическом уровне. В википедии есть более выхолощенный пример: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. а как сделать, что бы получилось типа такого 15391297 ? Как это сделать описанным методом я не вижу... Если это только я не вижу, тогда покажите пожалуйста. Может часть моих претензий к js просто не обоснована никак, и реализовать полноценную структуру объектов можно не прибегая к каким-либо трюкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 21:32 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёра как сделать, что бы получилось типа такого 15391297 ? http://jsfiddle.net/3AVEN/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 22:07 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёра как сделать, что бы получилось типа такого 15391297 ? http://jsfiddle.net/3AVEN/ а есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject).. тут как бы без разницы, мне всего лишь показалось так удобнее (хотя да, есть и недостатки, так как метод hasOwnProperty например теряет свой смысл)... но это не суть :) Кстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 22:50 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
вот последний вариант... Нету ничего лишнего в trace, в аргументах функций допустимы значения null и undefined (хотя не знаю зачем нужно последнее в аргументе, но всё же ввёл поддержку), и добавил возврат значений из таких перегруженных методов (изначально почему-то пропустил, не о том думал видимо ). итак, код: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. использовать вот так: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 23:04 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёра есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject)как я понимаю, ты отказался от методов в прототипах, и теперь для каждого экземпляра создаются новые методы. это плохо, неэкономно. к тому же нельзя позже добавить методы в базовый класс, так чтобы они были видны в дочерних. ПрограмёрКстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.?первый же вопрос - как вызывать родительский вариант из дочернего? возможно такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 23:12 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёра есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject)как я понимаю, ты отказался от методов в прототипах, и теперь для каждого экземпляра создаются новые методы. это плохо, неэкономно. к тому же нельзя позже добавить методы в базовый класс, так чтобы они были видны в дочерних. ПрограмёрКстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.?первый же вопрос - как вызывать родительский вариант из дочернего? возможно такое? как и ранее при таком методе наследования, с небольшим изворотом (не знаю, может представленный Вами метод лишён данного недостатка, ещё не разобрался): Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. код alert(t.try2('hello', 10)); выведет "hello20". То есть метод благополучно перекрыт и из него вызван метод предка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2014, 23:41 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёрдавайте так... просто нужна аналогия. вот пример классового наследования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Каким образом можно повторить данную структуру на прототипах? Пойдет такой вариант? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 09:40 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
krvsa, это ведь шутка? )) Если нет, то точно не подойдёт, так как это сейчас у нас в предке только одно свойство legs которое считается обычным присваиванием. А если бы это было значение, высчитывающееся по сложной формуле исходя из входного параметра конструктора? Правильно я понимаю, в данном случае пришлось бы повторять эту формулу в конструкторах всех потомков? А если таких свойств у объекта-предка дофига? В общем, если я не ошибся, то вариант не супер. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 10:29 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёрэто сейчас у нас в предке только одно свойство legs которое считается обычным присваиванием. А если бы это было значение, высчитывающееся по сложной формуле исходя из входного параметра конструктора? Правильно я понимаю, в данном случае пришлось бы повторять эту формулу в конструкторах всех потомков? Меня всегда удивляли такого рода "задания"... Типа "сделайте вот так"! Сделаешь - а тебе тут же "но это-то просто! а у меня вона как дальше сложно и много!" И что после этого делать? Писать все за тебя точно никто "забесплатно" не будет... ПрограмёрА если таких свойств у объекта-предка дофига? Да какая разница сколько их штук? Они все и занаследуются... ПрограмёрВ общем, если я не ошибся, то вариант не супер. :) В конечном счете решать-то тебе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 11:03 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр , можно и так вот сделать... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 11:10 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
krvsa, А за меня делать не надо )) Я не пишу никакое js приложение сейчас. Это как-бы в целях самообразования, а структуру приведённую я от балды взял, Вы же не думаете, что мне в скрипте нужен подсчёт людей и птичек ))) в последнем варианте возможно создать аналог класса Bird? То есть с прокидыванием одного аргумента в конструктор Animal (не перекрывая в Bird)? Если возможно, тогда соглашусь, что данный вариант позволяет воссоздать если не любой функционал классового наследования, то почти любой в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 11:30 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёриспользовать вот так: Код: javascript 1. 2. Программирование этой перегруженной скобками рутины в итоге займет больше времени, чем программирование самой бизнес-логики на получившихся объектах. Среда, поддерживающая язык, поддерживающий перегрузку нативно, предложит варианты перегрузок с перечнем параметров, а в js никаких подсказок от этих костылей ждать не приходится, все перегрузки известны лишь их автору. Нормальных подсказок по свойствам и методам объектов тоже не будет (куцая кое-где есть) — следствие слабой типизации. Но со временем и автор начнет забывать и структуру объектов и варианты перегрузок, а если следовать всем-всем правилам разработки, то все это еще и документировать нужно. Получается, кучу времени программист работает вхолостую, а бонусов от использования принципов ООП нет и не предвидится. Так в чем же тут профит по сравнению с обычным лапшекодом, делающим тоже самое, но как минимум вдвое короче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 11:54 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрВы же не думаете, что мне в скрипте нужен подсчёт людей и птичек ))) Почем мне знать... Это ведь ты пример привел, не я. Програмёрв последнем варианте возможно создать аналог класса Bird? То есть с прокидыванием одного аргумента в конструктор Animal (не перекрывая в Bird)? Даже в последнем моем варианте видна "независимость" аргументов "животного" от "кролика"... Я правильно понял про птиц? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:19 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
krvsa, про птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2. Так вот, задумка была в написании Bird таким образом, что бы без лишних изворотов в итоге можно было создать обе эти птички (опять же не переопределяя это свойство в потомке, так как это у нас присваивание простого значения, но если значение будет считаться по сложному алгоритму, сами понимаете, в каждом конструкторе его дублировать - не айс). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:27 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёрпро птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2. Аааа... Вона какая птица! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:30 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyПрограмёриспользовать вот так: Код: javascript 1. 2. Программирование этой перегруженной скобками рутины в итоге займет больше времени, чем программирование самой бизнес-логики на получившихся объектах. Среда, поддерживающая язык, поддерживающий перегрузку нативно, предложит варианты перегрузок с перечнем параметров, а в js никаких подсказок от этих костылей ждать не приходится, все перегрузки известны лишь их автору. Нормальных подсказок по свойствам и методам объектов тоже не будет (куцая кое-где есть) — следствие слабой типизации. Но со временем и автор начнет забывать и структуру объектов и варианты перегрузок, а если следовать всем-всем правилам разработки, то все это еще и документировать нужно. Получается, кучу времени программист работает вхолостую, а бонусов от использования принципов ООП нет и не предвидится. Так в чем же тут профит по сравнению с обычным лапшекодом, делающим тоже самое, но как минимум вдвое короче? тут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Например те же ExtJS и YUI позволят нормально задокументировать классы с помощью например JSDoc и будет ли тот же eclipse подсказывать название классов созданных с помощью озвученных фреймворков. Однако ними же пользуются.. и пользуются достаточно большое количество программистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:33 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
krvsaПрограмёрпро птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2. Аааа... Вона какая птица! ничего другого в голову не пришло, летающего и имеющего при этом больше 2 лап ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:35 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр, Объект "Птичка": Птичка.нога1=0; Птичка.нога2=1; ---------- Птичка.нога3=2; Птичка.нога4=3; Для грифона будет Птичка.length будет 4, а для всех остальных птичек - 2. Типа, if( Птичка.length>2) alert("Грифон детектед"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:39 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Вот вариант с "разноногими" птицами + "сложное вычисление" параметров для "животного"... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 13:56 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
krvsaВот вариант с "разноногими" птицами + "сложное вычисление" параметров для "животного"... Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. И дошли до раскрытия (развёртывания) представленного мной варианта с некоторыми переработками. 1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком. 2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики. Вместо этих двух пунктов я просто ввёл собственную цепочку прототипов (точнее их конструкторов) и обернул такое "наследование" в отдельный метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 14:10 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ShSergeПрограмёр, Объект "Птичка": Птичка.нога1=0; Птичка.нога2=1; ---------- Птичка.нога3=2; Птичка.нога4=3; Для грифона будет Птичка.length будет 4, а для всех остальных птичек - 2. Типа, if( Птичка.length>2) alert("Грифон детектед"); тут не понял :) Возможно мысль хорошая, но я даже идеи не понял (что бы как-то подумать о реализации). Можно как-то более по-народному? Ну или пример в коде, без разницы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 14:13 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком. 2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики. Я х/з что ты опять пытаешся объяснить... Но суть от этого не поменяется. Есть вот такой вот язык... С вот такими вот возможностями... Что тебе с ним делать и как использовать - решать тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 14:24 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёртут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Можно. ПрограмёрОднако ними же пользуются.. и пользуются достаточно большое количество программистов.Ну так они уже кем-то написаны, оттестированы, прекрасно задокументированы, обладают встроенным спектром решений конкретных прикладных задач, а не только абстрактных программистских, и сделаны максимально удобными в использовании. Заказчики не приходят с абстрактными задачами, за их решение не платят зарплату, так что сами по себе они никому не интересны. Никто из разработчиков популярных фреймворков не вываливал полусырую идею в интернеты с вопросом "а только ли нам этого не хватает?". Если бы они так сделали, то и получили бы такой же ответ — ага, только вам. Перегрузка не удобна в использовании и не взлетит. Наследование может и да, законченной реализации в твоем исполнении пока не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 15:13 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyПрограмёртут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Можно. ПрограмёрОднако ними же пользуются.. и пользуются достаточно большое количество программистов.Ну так они уже кем-то написаны, оттестированы, прекрасно задокументированы, обладают встроенным спектром решений конкретных прикладных задач, а не только абстрактных программистских, и сделаны максимально удобными в использовании. Заказчики не приходят с абстрактными задачами, за их решение не платят зарплату, так что сами по себе они никому не интересны. Никто из разработчиков популярных фреймворков не вываливал полусырую идею в интернеты с вопросом "а только ли нам этого не хватает?". Если бы они так сделали, то и получили бы такой же ответ — ага, только вам. Перегрузка не удобна в использовании и не взлетит. Наследование может и да, законченной реализации в твоем исполнении пока не видно. ясное дело я 20 строчек кода не буду пытаться протолкнуть как гениальный, полноценный фреймворк... Просто идея появилась, решил уточнить (перед длительным сидением над некому не нужной реализацией). Пока явных "фе" не было )) Всё сводится к незаконченности идеи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 15:33 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком. 2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики. Вместо этих двух пунктов я просто ввёл собственную цепочку прототипов (точнее их конструкторов) и обернул такое "наследование" в отдельный метод.именно эти два пункта учтены в том варианте, который я привел 15393424 - там создается стандартная цепочка прототипов, но без полноценного объекта в прототипе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 15:43 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёр1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком. 2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики. Вместо этих двух пунктов я просто ввёл собственную цепочку прототипов (точнее их конструкторов) и обернул такое "наследование" в отдельный метод.именно эти два пункта учтены в том варианте, который я привел 15393424 - там создается стандартная цепочка прототипов, но без полноценного объекта в прототипе. Вполне полноценный и работоспособный подход. Есть явные преимущества перед предложенным мной? Цепочка прототипов заполняется, однако всё-ровно не совсем полноценно. например alert(b.constructor.prototype._legs); вместо ожидаемого "2" выведет "undefined" :) В общем ничего против такого варианта не имею, но имеет смысл менять привычку только если в новом варианте есть преимущества. Так что, если есть, прошу пояснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 17:39 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЦепочка прототипов заполняется, однако всё-ровно не совсем полноценно. например alert(b.constructor.prototype._legs); вместо ожидаемого "2" выведет "undefined" :)и это правильно. суть в том, что все данные должны быть в составе объекта, а общие данные (в 99% случаев - функции) - в составе цепочки прототипов. ПрограмёрЕсть явные преимущества перед предложенным мной?как уже говорилось, работает механизм добавления методов во все промежуточные классы, который изначально предусмотрен в js. т.е. я могу отдельно добавить метод в Bird.prototype, тогда он будет виден объектам Bird и наследникам. а если добавлю метод в Animal.prototype, он виден в объектах Animal и наследниках. ну и тот факт, что для каждого экземпляра объекта не создаются отдельные экземпляры функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 17:57 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёрЦепочка прототипов заполняется, однако всё-ровно не совсем полноценно. например alert(b.constructor.prototype._legs); вместо ожидаемого "2" выведет "undefined" :)суть в том, что все данные должны быть в составе объектапредставь, что _legs - не число, а массив, куда в ходе работы что-то добавляется. окажись он в прототипе, был бы один общий массив для всех экземпляров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2014, 17:59 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрВсем привет. Мне вдруг стало интересно, одному мне это в js мешает при решении более-менее сложных задач: 1. отсутствие полноценного механизма наследования 2. отсутствие проверки на валидность переданных в функцию параметров 3. отсутствие возможности перегрузки методов (при разных входных параметрах разная логика) Нет нетолко вам. Но нет в мире совершенства!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 22:55 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Проблема многих, кому чегото не хватает в javascript, в том что приходя в javascript они мыслят и пытаются использовать его как предыдущий язык. Чего греха таить - я тоже после C# хотел классов, но после изучения языка и многих лет работы мне становится смешно, когда ктото в очередной раз хочет классов в javascript) В монолитных приложениях, когда весь код сразу на месте - это может и необходимость, но в фронтэнде как правило необходимые модули подгружаются динамически, что сводит на нет использование классов. JavaScript тем и прекрасен, что в нем нет строгой типизации, помню сколько огорода приходилось городить на C# чтобы иметь возможность обрабатывать различные типы классов в одно коде. Чур меня чур от такого!) JavaScript гибок, легок и прекрасен именно в таком виде какой он есть и переделывать его не надо - надо переделывать программистов, которые хотят его переделать) Не хотите всех его плюшек - переходите на другие языки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 15:07 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
spПроблема многих, кому чегото не хватает в javascript, в том что приходя в javascript они мыслят и пытаются использовать его как предыдущий язык. Чего греха таить - я тоже после C# хотел классов, но после изучения языка и многих лет работы мне становится смешно, когда ктото в очередной раз хочет классов в javascript) В монолитных приложениях, когда весь код сразу на месте - это может и необходимость, но в фронтэнде как правило необходимые модули подгружаются динамически, что сводит на нет использование классов. JavaScript тем и прекрасен, что в нем нет строгой типизации, помню сколько огорода приходилось городить на C# чтобы иметь возможность обрабатывать различные типы классов в одно коде. Чур меня чур от такого!) JavaScript гибок, легок и прекрасен именно в таком виде какой он есть и переделывать его не надо - надо переделывать программистов, которые хотят его переделать) Не хотите всех его плюшек - переходите на другие языки Переход на другой язык не представляется возможным... Как-то я себе не представляю как клиентскую часть сайта возможно написать на С#, не написав собственный интерпретатор :) А как различные типы классов в одном коде то обрабатывать? Если вызывать методы класса, или обращаться к определённым свойствам, то для этого и придумали наследование и интерфейсы (просто структуру классов надо правильно строить). И как динамическая подгрузка сводит на нет использование классов? В пхп include тоже динамически код грузит, но там это никак не мешает использовать классовое ООП на полную катушку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 16:33 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрА как различные типы классов в одном коде то обрабатывать? Если вызывать методы класса, или обращаться к определённым свойствам, то для этого и придумали наследование и интерфейсы (просто структуру классов надо правильно строить). javascript тем и хорош что в нем не нужна никакая структура классов, что в одном коде обработать любые, т.е. абсолютно любые заранее неизвестные структуры данных! И только благодаря отсутствию строгой типизации и прототипной структуре наследование такая гибкость доступна в этом языке. ПрограмёрИ как динамическая подгрузка сводит на нет использование классов? В пхп include тоже динамически код грузит, но там это никак не мешает использовать классовое ООП на полную катушку. Динамическая подгрузка в таком случае сводится не подгрузке одного класса а всей иерархии классов сразу - что лишает смысла динамическую подгрузку в целом! Перестаньте мыслить классами, думайте лучше о мелких функциональных модулях или о mixins - этот шаблон проектирования наиболее распространен в javascrip программировании - обратите внимание на Node.js - там этот шаблон используется на полную катушку и причем очень продуктивно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 22:33 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
spjavascript тем и хорош что в нем не нужна никакая структура классов, что в одном коде обработать любые, т.е. абсолютно любые заранее неизвестные структуры данных то есть js Вам нравится тем, что перед тем как что-то написать не надо думать и проектировать? Начал писать, а дальше уж как пойдёт?! :) Но основная суть всё-же не в этом... Как уже писал, мне больше всего не хватает перегрузки методов, когда один метод с разными аргументами работает по-разному, при чём без дополнительной логики в теле метода. Этого я как-раз таки и добился (хотя пришлось в итоге некоторые изменения внести, так как IE как всегда не очень понравились некоторые моменты :)) + для оптимизации по скорости). spДинамическая подгрузка в таком случае сводится не подгрузке одного класса а всей иерархии классов сразу - что лишает смысла динамическую подгрузку в целом! Повторюсь... php также умеет грузить код частями и динамически, при этом классовое ООП и динамическая подгрузка кода там очень даже хорошо уживаются (взять тот же yii с его достаточно сложной структурой и "lazy loading"). При динамической загрузке грузить надо не всю иерархию классов (в моём случае модулей, так как у меня основная делёжка не по классам, а по модулям), а только зависимости для данного модуля. Насчёт mixin, а чем он лучше множественного наследования (чем так принципиально отличается)? Ведь в принципе то же самое, за исключением вызова конструкторов предков (подобно наследованию от нескольких классов без конструкторов). Нет, конечно на уровне языка, отличие в реализации очень большое... Но вот уже на уровне создания приложения - я не понимаю особой разницы. Ну да, паттерн mixin позволяет расширить функционал отдельного объекта, что не принято делать при классовом наследовании. Однако "не принято", не значит "запрещено" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 02:49 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёр, ну зачем вы специально все утрируете?)) если у вас есть молоток, но вы привыкли работать с топором - зачем переделывать молоток под топор. чтоб забивать им гвозди??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 01:41 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
spПрограмёр, ну зачем вы специально все утрируете?)) если у вас есть молоток, но вы привыкли работать с топором - зачем переделывать молоток под топор. чтоб забивать им гвозди??? У меня есть опыт работы с топором (дэлфи и php), и есть в руках молоток (js), кстати, есть и опыт работы с ним. Так вот я как-раз хочу сделать молоток таким, что бы одной стороной можно было гвозди забивать удобно, а повернув - дрова рубить )). То есть я к молотку просто стараюсь прикрутить функцию топора, при этом как можно меньше ограничив оригинальные функции инструмента. Пока удаётся... )) в копилку кстати свалилась возможность быстрой выборки элементов DOM по селектору (по производительности сравнима с jQuery), а также инструмент для анимаций (он кстати по производительности не уступает jQuery, пока на глаз с анимированием в несколько десятков элементов). С новыми доработками пишется очень удобно... надеюсь что-то в итоге и получится )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 02:05 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Програмёрв копилку кстати свалилась возможность быстрой выборки элементов DOM по селектору (по производительности сравнима с jQuery), а также инструмент для анимаций (он кстати по производительности не уступает jQuery, пока на глаз с анимированием в несколько десятков элементов). С новыми доработками пишется очень удобно... надеюсь что-то в итоге и получится )) Выборка по DOM - querySelectorAll(), анимация - CSS3 Animation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 04:07 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
st_stПрограмёрв копилку кстати свалилась возможность быстрой выборки элементов DOM по селектору (по производительности сравнима с jQuery), а также инструмент для анимаций (он кстати по производительности не уступает jQuery, пока на глаз с анимированием в несколько десятков элементов). С новыми доработками пишется очень удобно... надеюсь что-то в итоге и получится )) Выборка по DOM - querySelectorAll(), анимация - CSS3 Animation. querySelectorAll() - это да... штука хорошая... Именно её и использовал у себя. Но сама по себе выборка не несёт смысла без методов быстрого изменения свойств элементов и тому подобное (как в jQuery) CSS3 Animation - до IE10 про неё можно забыть... если там и есть какая-либо поддержка, то как минимум animation-timing-function в ie ниже 10 не поддерживается. В итоге да, можно и его использовать, но ещё рано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 22:51 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрНо сама по себе выборка не несёт смысла без методов быстрого изменения свойств элементов и тому подобное (как в jQuery)да не сказал бы. "быстрое изменение свойств" (как я понимаю, методы вроде .css(), .val() и т.д.) и в цикле нетрудно сделать. а вот без селекторов иногда придется люто г-кодить. очень крутой механизм. хотя нативные селекторы несколько уступают jQuery. Основное отличие - jQuery умеет "заглядывать внутрь" - селекторы ":has" и т.д., которых нет в css. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 23:56 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Эх с точки зрения семантики, лаконичности и гибкости с моей субъективной точки зрения JavaScript лучший язык. Как я скучаю по его гибкости в Java. Как парит громоздкость в PL\SQL. Как устал от этих begin \ end в дельфи (хотя они же есть и в PL\SQL и в pgSQL и еще вопрос где они появились раньше). В С++ просто до смеху доходят с их "завихрениями" в ООП )) - вот реально надоела его STL и этот Boost, да еще и MS Visual IDE сделано ну не для RAD. Везде есть плюсы и минусы - ну вот к примеру кто видел крутой 3D движок на JavaScript с миллионом треугольников в сцене и материалами - а многопотоковость ? вот вот. Хочешь халяву юзай Java. Накопил штуку баксов купи MS Visual и пиши С++, накопил три штуки баксов купи Delphi. Накопил 548.913 $ купил оракл ))) Потом плюнул на тормоза и заменил бесплатным постгресом ) Но в любом случае я люблю эти языки - и они хороши по своему - в каждом своем отдельном применении. P.S> Да убережет Вас рука от холивара ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 01:47 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Judoс точки зрения семантики, лаконичности и гибкости с моей субъективной точки зрения JavaScript лучший язык.+1 (тоже субъективный) Judoну вот к примеру кто видел крутой 3D движок на JavaScript с миллионом треугольников в сцене и материаламиэто удел С++ - наверно, единственного языка, которому js не может составить конкуренцию. Judoа многопотоковость ?многопотоковость не относится к языку - это фича среды выполнения. и кстати в современных браузерах она есть - https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 11:40 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечJudoс точки зрения семантики, лаконичности и гибкости с моей субъективной точки зрения JavaScript лучший язык.+1 (тоже субъективный) Judoну вот к примеру кто видел крутой 3D движок на JavaScript с миллионом треугольников в сцене и материаламиэто удел С++ - наверно, единственного языка, которому js не может составить конкуренцию. тынц лучше всего в ff Яростный Мечмногопотоковость не относится к языку - это фича среды выполнения. и кстати в современных браузерах она естьИ используется как раз для подсчета треугольничков. Кроме матана, воркерам нечего делать, к dom'у из них нельзя обращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:16 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyКроме матана, воркерам нечего делатьпо-хорошему это везде так. Ввод/вывод правильнее делать асинхронными, а все прочие долгие операции - вычисления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:24 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Judoс миллионом треугольников в сценеТреугольники это дедушки шейдеров. Нафига нужны миллионы треугольников, если с помощью шейдеров можно имитировать любой рельеф на абсолютно плоской поверхности? Judoи материаламиНу вот конкретно материалы и шейдеры, но уже на другом движке. На нем же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:35 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Яростный МечJudoс точки зрения семантики, лаконичности и гибкости с моей субъективной точки зрения JavaScript лучший язык.+1 (тоже субъективный) Judoну вот к примеру кто видел крутой 3D движок на JavaScript с миллионом треугольников в сцене и материаламиэто удел С++ - наверно, единственного языка, которому js не может составить конкуренцию. Judoа многопотоковость ?многопотоковость не относится к языку - это фича среды выполнения. и кстати в современных браузерах она есть - https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers Меч тут ты прав, мне всегда подымают настроение люди которые говорят что Дельфи это паскаль)). Еще более интересно слышать от них новость что С++ быстрее в РанТайме на 30%. Да это возможно было во времена динозавров и Дельфи 3 но не позже )). Уже в 4 компилятор оптимизировали и VCL давно уж как снабдили ассемб вставками. Ну я полность за то чтобы большинство компании покупали себе MS C++ компайлер нанимали сотню програмегггов и писали годами ПО на своем псевдо RAD. Меньше конкуренция проще жить)) Людям не запретишь думать что земля плоская и мы единственные высшие существа во вселенной) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:44 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyJudoс миллионом треугольников в сценеТреугольники это дедушки шейдеров. Нафига нужны миллионы треугольников, если с помощью шейдеров можно имитировать любой рельеф на абсолютно плоской поверхности? Judoи материаламиНу вот конкретно материалы и шейдеры, но уже на другом движке. На нем же. Не путайте геометрию с материалами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:48 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Judo, В общем, графических возможностей у браузеров уже больше, чем было 10 лет назад у целого компьютера с 3д-ускорителем :) Не в недостаче треугольников проблема — идей нет. Технологий выдумывается больше, чем конечных продуктов на них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:02 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyJudo, В общем, графических возможностей у браузеров уже больше, чем было 10 лет назад у целого компьютера с 3д-ускорителем :) Не в недостаче треугольников проблема — идей нет. Технологий выдумывается больше, чем конечных продуктов на них. Покажи доказательство JavaScript с использованием Cuda и PhysX (тогда поболтаем про 10 лет)) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:11 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyНе в недостаче треугольников проблема — идей нет.+100 иногда думаю - эх, вернуться бы с накопленными знаниями лет на 10-15 назад - щас был бы владельцем всяких твиттеров-фейсбуков, а не г-кодером рядовым... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:15 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
JudoПокажи доказательство JavaScript с использованием Cuda и PhysX (тогда поболтаем про 10 лет)) ?10 лет назад PhysX еще не было, так что за доказательствами проходи мимо. Вопрос в другом — нафига? Этими свистелками затыкают все тот же кризис идей. У нас реалистическая физическая модель!11 — вопят производители контента, соря релевантными аббревиатурами, а как взглянешь, ради чего эта физика — зальешься кровавыми слезами. Это во-первых, а во-вторых, что, без свистелок уже и физику посчитать невозможно? Да на . PhysX может работать без всякой куды, и я однажды специально гонял игрушку на видеокарте ATI (тогда еще) со включенной физикой и выключенной. Процессор разницы не заметил, фпс почти не изменился. Вклад физики в общую нагрузку настолько мал, что браузер с js ее так же не заметит, как и ЦП. Конечно, при реализации физики прямыми руками. К слову, 3d-движок BananaBread переведен на js как раз с с++, причем какой-то автоматизированной тулзой. Что мешает перевести тот кусок PhysX, который не юзает Куду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:34 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
AntonariyJudoПокажи доказательство JavaScript с использованием Cuda и PhysX (тогда поболтаем про 10 лет)) ?10 лет назад PhysX еще не было, так что за доказательствами проходи мимо. Вопрос в другом — нафига? Этими свистелками затыкают все тот же кризис идей. ...... Это все слова которые любят произносить теоретики. Вот приведи пример какой нибудь солидной 3D MMORPG минимум с хотя бы 30 игроками в локации, движок которой сделан на JavaScript ? а потом оценим ее качество графики )) Хорошая идея возникает у одного человека из тысячи, а может быть из десяти тысяч. И она еще может взлететь а может и нет, что зависит от страны где он живет, инвестиций и правильного продвижения. А может так и остаться никому не известной. Так было и так будет. А кризис идей это просто красивые слова. P.S> И чего он так взъелся ?))) ----- Не путайте самолеты с подводными лодками - каждый язык хорош в своей области применения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 21:48 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Antonariy, Возьметесь сделать аналог Assasin's Creed Black Flag на JavaScipt (с таким же уровнем графики) ? А мы заплатим (без шуток) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 21:53 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Готов освоить бюджет в 200 000 000 $ на разработку игры которую невозможно защитить от пиратов (без шуток) с таким же уровнем графики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 22:18 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
JudoВот приведи пример какой нибудь солидной 3D MMORPG минимум с хотя бы 30 игроками в локации, движок которой сделан на JavaScript ? а потом оценим ее качество графики ))А эталоном будет Assasin's Creed? Игры такого уровня делают годами, а webgl дай бог года три исполнилось, как и веб-сокетам, без которых пинг для online-беготни был бы неприлично большим. Дай побольше время, все будет. Но кое-что есть и сейчас: Если это не клон дьяблы, считайте меня адинэснегом. :) Графика уровня AC в браузерах под виндой невозможна до тех пор, пока она рисуется через убогий GDI. Однако metro работает через directx, и когда вин-браузеры переедут под метро, и эта планка будет взята, даже html 6 не потребуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 22:55 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Ну вообщем JS рулит и разруливает )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 23:10 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Малыхин СергейГотов освоить бюджет в 200 000 000 $ на разработку игры которую невозможно защитить от пиратов (без шуток) с таким же уровнем графики А какую возможно? )) Вообще, по безопасности js не уступает другим языкам. Если речь о том, что он open-source, то можно написать без проблем свой байт-код интерпретатор (уж в 200 000 000 Вы вложитесь ). Хотя думаю уже должны быть готовые решения по данному вопросу :) Вы не первый, кто хочет уберечь свой код от посторонних глаз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 23:39 |
|
||
|
Одному мне не хватает этого в js?
|
|||
|---|---|---|---|
|
#18+
Judo Ну вообщем JS рулит и разруливает ))А обещал оценку качества графики... ПрограмёрВы не первый, кто хочет уберечь свой код от посторонних глаз :)Так он вроде как раз и не хочет: Малыхин Сергей которую невозможно защитить от пиратовТипа это фича :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 09:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=22&tid=1447460]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
104ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 501ms |

| 0 / 0 |
