|
|
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Вот в книжечке нашел пример кода: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. и стало интересно, а чем собственно он будет отличаться от: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 14:51 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Lexxxxxа чем собственно он будет отличатьсятипом возвращаемого результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 14:59 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Паганель, Почему? В обоих случаях членом deentityifi в прототипе станет функция, которая будет выполнять одни и те же действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 15:25 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Уважаемый Паганель, не могли бы Вы более детально разъяснить, как различаются типы возвращаемого результата в первом и втором случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 15:49 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Lexxxxx Код: javascript 1. Код: javascript 1. http://javascript.ru/String/replace Этот метод не меняет вызывающую строку, а возвращает новую, после замен.чего тут еще подробнее объяснять, я не понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 15:56 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Паганельчего тут еще подробнее объяснять, я не понимаю Обратите пожалуйста внимание на реализацию метода Function.prototype.addMethod, на }()); в первой реализации, и }); во второй. В обоих случаях String.deentityifi будет функция, но в первом случае переменная entity будет доступна этой функции через замыкание,а во втором она будет являться собственной локальной переменной функции. Хотелось бы узнать в чем выгода первого способа (а в книжке к нему даже применен эпитет "идеальный")? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 16:08 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
а, ну да, скобок я и не заметил:) тогда не знаю это наверное что-то из области комбинаторов неподвижных точек... как-то в жизни мне не приходилось такое творить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 16:15 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно что означают слова "объект будет обрабатываться при каждом вызове функции"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 16:26 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
ну... для этого надо знать как работает интерпретатор я - не знаю могу только догадываться, что каждый раз, выполняя функцию, он должен под все локакльные переменные выделить память и (если указано) проинициализировать данными наверное, это замедляет работу функции на какие-то наносекунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 17:13 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Паганель, Я думал что значения из прототипа копируются во все экземпляры объекта. Следовательно во всех экземплярах, имеющих метод deentityifi, прицепленный к прототипу, имеется ссылка на один и тот же метод, а в нем всего одна копия этого entity. (Интересно, а мои мысли о прототипе соответствуют действительности?) И тогда непонятно, что он понимает под обработкой этого объекта?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 17:18 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
не знаю код Код: javascript 1. 2. мне что-то ответа не дал затрудняюсь придумать эксперимент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 17:31 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Паганель, А разве Код: javascript 1. не подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 17:45 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
я не знаю говорит ли это о копировании данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 18:01 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Lexxxxx, откуда взяли пример? Что за книга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 18:06 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Паганелья не знаю говорит ли это о копировании данных Судя по примеру кода и по тому, что при создании нескольких экземпляров объектов их свойства, унаследованные от прототипа, можно менять в каждом экземпляре независимо от других экземпляров, похоже что в каждый вновь созданный экземпляр объекта просто копируются значения из свойств объекта-прототипа. И судя по Код: javascript 1. копируется ссылка на функцию, а не сама функция. Или это на меня навеяло понятием ссылочных типов из C#. :) Кто знает правду, подскажите! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2013, 18:50 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Lexxxxxпохоже что в каждый вновь созданный экземпляр объекта просто копируются значения из свойств объекта-прототипа. 13635132 и весь топик почитай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 15:20 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
Имя пользователя1, А что там нового написано? Кроме того мне кажется что фраза "однако в объекте, созданном через new Foo(), есть скрытое поле-ссылка (назовем ее "__proto__"), которая ссылается на тот же объект, на который ссылается Foo.prototype (на момент вызова new Foo())" не совсем верна. Так как если бы все созданные через new объекты ссылались бы на один и тот же экземпляр "прототипного объекта", то это привело бы к тому, что изменение значения свойства из прототипа в одном экземпляре объекта приводило бы к отображению этого изменения в остальных экземплярах, в том числе и вновь созданных. Так что похоже каждый объект имеет свой экземпляр "прототипного объекта". Хотя то, что при добавлении свойства в прототип это свойство появляется у всех созданных ранее экземпляров объектов говорит нам о том что "исходный прототипный объект" имеет связь со всеми уже созданными экземплярами объектов. Короче там какой-то хитрый механизм имеется! ) Вроде у каждого экземпляра есть свои копия "прототипного объекта", но добавление свойства в прототип добавляет его и во все его копии у созданных экземпляров. Никто не знает какой нибудь источник, где хорошо описан этот механизм? И по основному вопросу темы, так в чем же идеальность первой реализации String.addMethod('deentityifi',...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 17:12 |
|
||
|
Модули, замыкания и прочие азы
|
|||
|---|---|---|---|
|
#18+
LexxxxxТак как если бы все созданные через new объекты ссылались бы на один и тот же экземпляр "прототипного объекта", то это привело бы к тому, что изменение значения свойства из прототипа в одном экземпляре объекта приводило бы к отображению этого изменения в остальных экземплярах, в том числе и вновь созданных.нет. в момент присвоения новое значение свойства будет записано в сам объект, а не в его прототип. и далее будет считываться с самого объекта (не придется заглядывать в прототипы). с другой стороны, пример Код: javascript 1. 2. 3. 4. 5. 6. 7. подтверждает, что изначально прототипное свойство - общее для всех экземпляров. LexxxxxТак что похоже каждый объект имеет свой экземпляр "прототипного объекта". Хотя то, что при добавлении свойства в прототип это свойство появляется у всех созданных ранее экземпляров объектов говорит нам о том что "исходный прототипный объект" имеет связь со всеми уже созданными экземплярами объектов. Короче там какой-то хитрый механизм имеется! ) Вроде у каждого экземпляра есть свои копия "прототипного объекта", но добавление свойства в прототип добавляет его и во все его копии у созданных экземпляров. Никто не знает какой нибудь источник, где хорошо описан этот механизм?поскольку указанного механизма (с копиями прототипов) нет в природе, то и источника с описанием тоже нет (кроме, разумеется, 13726297 ) LexxxxxИ по основному вопросу темы, так в чем же идеальность первой реализации String.addMethod('deentityifi',...?в первом случае всегда используется один и тот же объект entity, во втором - каждый раз создается при вызове deentityifi. разумеется, нет смысла каждый раз создавать его заново, потому первый вариант лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 06:29 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=145&tid=1448890]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 319ms |

| 0 / 0 |
