Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
Всем привет, хочу спросить следующее. В чем разница между конструкция в JavaScript Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. и Код: javascript 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 00:46 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
spider13В чем разница между конструкция в JavaScript Первая с ошибкой вторая рабочая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 08:13 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
krvsaspider13В чем разница между конструкция в JavaScript Первая с ошибкой вторая рабочая... Хорошо, пропустил запятую, но не в этом суть. И в первом и во втором случае получаем объект. В чем разница используемых методов и почему тот способ, который я написал первым нигде не используется? Я так понимаю разницы в использовании нет, или я ошибаюсь? skyANA Создание объектов через "new" Я читал это. Поэтому и возник вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 09:35 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
spider13И в первом и во втором случае получаем объект. В чем разница используемых методов и почему тот способ, который я написал первым нигде не используется? Как это "нигде не используются"? - еще как используются. Чаще они вызываются без new, второй вариант принято вызывать с new. А, так, да, они идентичны. По ссылке указанной выше так и сказано "...любая функция может быть использована как конструктор" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 10:10 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
spider13krvsaпропущено... Первая с ошибкой вторая рабочая... Хорошо, пропустил запятую, но не в этом суть. И в первом и во втором случае получаем объект. В чем разница используемых методов и почему тот способ, который я написал первым нигде не используется? Я так понимаю разницы в использовании нет, или я ошибаюсь? skyANA Создание объектов через "new" Я читал это. Поэтому и возник вопрос.Как это первый способ нигде не используют? Фабричные методы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 10:44 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
я обычно создаю объекты вечрез dojo.declare (amd), там один раз забыл new написать, вывалилась ошибка. так что похоже есть какая-то разница ))) через new появляется this, если его не сказать,то это будет просто объект, на сколько я понимю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2016, 18:37 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
alexy_blackчерез new появляется this, если его не сказать,то это будет просто объект, на сколько я понимю. Я бы сказал "через new можно использовать this". А "простого" объекта или "сложного" не бывает. Объект, он и в Африке объект. Если хочешь в его определении использовать this - это твой второй вариант. Если this не нужен - подойдет и первый твой вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 10:40 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
krvsa, а я бы сказал что в первом варианте можно устанавливать геттеры и сеттеры, при чём для синтаксиса во втором варианте я аналогов не нашёл ) ещё я бы сказал, что в первом случае мы получим объект класса object, а во втором класса createA. в первом мы просто пишем функцию которая возвращает объект не имея в целом к нему никакого отношения, во втором функция выступает конструктором класса (объекта). для меня немного размыт механизм наследования при использовании первого варианта (особенно речь о наследовании конструкторов). во втором варианте мы можем писать методы в прототип конструктора, тем самым создавая 1 экземпляр метода даже для 10 объектов этого класса. В первом варианте по указанному синтаксису мы будем пихать методы по 1 экзепляру на каждый объект (расход памяти) личный итог: если нужно создать простой и удобный для обработки объект с алиасингом методов в свойства - стоит выбрать первый вариант, а расширять объекты строго примесями (без разных там попыток наследования). если структура объектов сложная и требует наследований и т.д., тогда я бы выбрал второй метод. Ещё второй метод позволяет имитировать статические свойства. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 00:27 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
Програмёр, по каждому пункту вопрос Что? Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 00:45 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёр, по каждому пункту вопрос Что? Почему? jsFiddle ответы тут со статическими свойствами загнал (их и в первом варианте сделать просто). всё остальное, кроме моего личного ощущения "размытости" механизма наследования продемонстрированы по ссылке (в том же порядке что и написаны в сообщении). По поводу "Что?" всё по всё той же ссылке, а "Почему?" - думаю было провокационным вопросом, так как если я смог донести правильно ответ на "Что", то "Почему" при твоём то опыте за секунды прояснится :) Поправь меня, если я в чём-то не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 21:02 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
мне кажется, что это всё игрища вокруг парадигмы ООП и в том и в другом случае можно добавлять в каждый объект копии одинаковых функций (методов), и в том и в другом случае можно передавать разные объекты в единственную функцию, которая их обрабатывает. имхо чем код проще и короче, тем лучше, да и ошибок меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 22:27 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
да, ещё, я-бы пальцы ломал тем, кто привык без ограничений лезть в прототипы, это надо делать только в самых ответственных и редких случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 22:31 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоццида, ещё, я-бы пальцы ломал тем, кто привык без ограничений лезть в прототипы, это надо делать только в самых ответственных и редких случаях. и с чего это вдруг такой вывод? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 23:12 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
JS интерпретируемый язык, без строгой типизации, сейчас объект содержит визуальный HTML-элемент, потом он может быть набором полей призвольной структуры, в том числе и ссылками на HTML-элементы, в любой момент можно у любого объекта поменять что угодно, в отличие от компилируемых языков со строгой типизацией. JavaScript создан для работы с DOM браузера, а в него суют ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 23:36 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
JavaScript оказался очень удачным средством, если не загонять его в рамки той или иной парадигмы, утверждая при этом, что "вот такой подход к пректированию и есть самый правильный". JS тем и хорош, что для определённого круга задач он обладает рядом несомненных преимуществ и позволяет очень многое сделать простейшим способом. имхо не стоит усложнять то, что и так работает отлично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 23:46 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
бухалтер фантоцциJS интерпретируемый язык, без строгой типизации, сейчас объект содержит визуальный HTML-элемент, потом он может быть набором полей призвольной структуры, в том числе и ссылками на HTML-элементы, в любой момент можно у любого объекта поменять что угодно, в отличие от компилируемых языков со строгой типизацией. JavaScript создан для работы с DOM браузера, а в него суют ООП. Очень познавательно с одной неточностью: прототип задаётся не для объекта, а для конструктора объекта. Я не представляю что надо иметь в голове, что бы пробовать изменить прототип конструктора, не будучи уверенным, какого именно конструктора. P.S. речь не о __proto__ (или как он там правильно). Я бы сказал что прото вообще трогать противопоказано. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 01:18 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
Програмёр, вот ты проиллюстрировал кодом и вопросы отпали. Сразу бы так :) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 08:30 |
|
||
|
[JS] отличия объектов
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЯ не представляю что надо иметь в голове, что бы пробовать изменить прототип конструктора, не будучи уверенным, какого именно конструктора. Так в этом как раз всё дело - прототип нужно менять, чтобы правильно использовать всю мощь прототипного наследования! JavaScript силён именно своим прототипным наследованием, в отличие от классического ООП, прототипы показывают себя при работе объектов - дают гибкость, недостижимую для классического наследования. Обычно цель заморочек одна - повторное использование кода, чтобы однотипный код не дублировался и экономилась память. JavaScript позволяет это прекрасно делать без конструкторов и прототипов. Насильно пихать ООП в JS не вижу никакого смысла, это на любителя, потому что преимуществ никаких нет, но как правило, возможности прототипов тухло используются для синтаксического сахара ООП . Многие даже не понимают, какие возможности у них в руках, выучили ООП-фреймворк - и впирёд! я вижу смысл использовать собственные конструкторы и прототипы только для осознанных действий, например: массовое изменение существующих объектов (добавление свойств, изменение поведения через методы-прототипы). То-есть для облегчения групповых изменений уже созданных объектов, а не только лишь ради создания объектов! В этом и есть сила прототипного наследования! ООП тут не причём, но часто больше мешает, чем помогает. Но так-же можно и массово испортить существующие объекты, поэтому всюду пихать конструкторы и прототипы глупо. Повторяю - в JavaScript с любым существующим объектом можно сделать что угодно, независимо от способа его создания, this работает надёжно только в конструкторе, в остальных случаях его нужно отслеживать и проверять. -------------------------------------------------------------------------------- Ниже простые примеры, иллюстрирующие сказанное, один с прототипами, другой без. Оба типа создания и работы с объектами необходимы и используются в разработке. Рекомендую открыть в соседних вкладках и сравнивать по шагам (лучше не в хроме - там alert блокирует переключение между вкладками). Использование прототипов и конструкторов Код: html 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. Без прототипов Код: html 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2016, 08:38 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39162501&tid=1445447]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
194ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 293ms |
| total: | 585ms |

| 0 / 0 |
