|
|
|
Одному мне не хватает этого в 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 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38521887&tid=1447460]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 438ms |

| 0 / 0 |
