Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Схема Создание объекта функцией-конструктором (https://javascript.ru/forum/project/20665-skhema-sozdanie-obekta-funkciejj-konstruktorom.html)

Gozar 12.08.2011 23:13

Схема Создание объекта функцией-конструктором
 
Нарисовал схему для объяснения создания объекта и что и откуда берется и что куда смотрит, за основу были взяты материалы(авторы там же) указанные в пункте 7 ЧаВО и Стандарт языка.
Если пройдет гладко, добавлю в ЧаВО.

Предложения и уточнения приветствуются, включая флуд, троллинг и т.п.

http://s2.ipicture.ru/uploads/20110812/pTy5ddD6.png


При создании объекта ни один конструктор не пострадал :)

devote 12.08.2011 23:25

Цитата:

Сообщение от Gozar
При создании объекта ни один конструктор не пострадал

а я уж было чуть ли не распериживался :D

0931454574 13.08.2011 11:35

и зачем это? применение какое?

Kolyaj 13.08.2011 11:59

К сожалению, я ничего не понял, даже зная, как это работает.

melky 13.08.2011 12:17

Цитата:

Сообщение от Kolyaj (Сообщение 120271)
К сожалению, я ничего не понял, даже зная, как это работает.

тоже

пояснений бы

kobezzza 13.08.2011 13:41

Мне кажется стиль оформления нужно немного изменить, а то я тоже например с первого раза не въехал (раз уж это графическая схема, то она должна быть очень наглядной). Вершинки графа нужно сделать поменьше, а расстояние между ними побольше, также думаю цвета не оч хорошо выбраны. А так всё понятно (если отбросить оформление:)), и если использовать, как дополнение к тексту - то будет просто супер!

Цитата:

и зачем это? применение какое?
Подрастёшь - узнаешь;)

Sweet 13.08.2011 13:45

Цитата:

Сообщение от Kolyaj
К сожалению, я ничего не понял, даже зная, как это работает.

+1. Уже видел подобные схемы, но это плохая форма для понимания - многих "вгоняет в глубочаюшую дипрессию".

Gozar 13.08.2011 14:10

Розовым то, что недоступно на прямую
Синим то, что доступно на прямую(могу поменять только на зеленый)

Двигаясь снизу вверх можно проследить связь между объектами. Каким именно образом один объект связан с другим(например: цепь прототипов - правый вертикальный ряд).

Наглядно это объясняет a.[[Prototype]].constructor -> A

синяя стрелка пунктиром обозначает что в a.[[Prototype]] "пишется" то что в A.prototype

devote 13.08.2011 14:16

Gozar,
Я просто не понимаю для чего она эта схема? для тех кто и так в курсе что из себя представляет объект и как он работает или для новичков которые понятия не имеют что это такое... Если первое, то понятно... если же для новичков. То скажу сразу, они посмотрят на эту картинку, ничего не поймут и дальше будут продолжать писать на форуме "Помогите не могу разобраться."

Для них надо более понятно писать и рисовать. Описывая каждый пиксел на картинке

Gozar 13.08.2011 14:23

Цитата:

Сообщение от devote (Сообщение 120291)
Gozar,
Я просто не понимаю для чего она эта схема?

Для пояснения цепи прототипов.

Меня не интересуют те, кто не хочет знать.

ps: "Мне ничего не понятно" можно было не писать, т.к. оно ничего не обозначает.

Создана потому что с помощью этого: http://www.mollypages.org/misc/jsobj.jpg и вот этого: http://egachine.berlios.de/embedding...-ecma-base.png не удалось объяснить.

devote 13.08.2011 14:25

Цитата:

Сообщение от Gozar
Для пояснения цепи прототипов.

Я не правильно выразился, хотел сказать "для кого она эта схема"

Gozar 13.08.2011 14:28

Цитата:

Сообщение от devote (Сообщение 120294)
Я не правильно выразился, хотел сказать "для кого она эта схема"

Это принципиальный вопрос? Учебник или справочник пишут только для определенных людей?
Хорошо я отвечу, эта схема для программистов. Для показа упрощенной модели.

Gozar 13.08.2011 14:29

Цитата:

Сообщение от kobezzza (Сообщение 120284)
Вершинки графа нужно сделать поменьше, а расстояние между ними побольше

Сделаю.

Riim 13.08.2011 14:31

Розовые буквы не видно.

Gozar 13.08.2011 14:33

Цитата:

Сообщение от Riim (Сообщение 120297)
Розовые буквы не видно.

Сделаю оранжевые и потемнее, не хочу красный вводить

devote 13.08.2011 14:34

Цитата:

Сообщение от Gozar
Хорошо я отвечу, эта схема для программистов. Для показа упрощенной модели.

Это понятно, проблема в том если ты хочешь начинающим прогерам показать как это все работает, тогда надо рисовать так что бы понял каждый, если даже понимающие с трудом понимают что там по нарисовано, хотя честно скажу в тех рисунках линки которых ты привел выше более понятно, ну так кажется мне по крайней мере. Ну а если для себя делаешь как памятку, то тогда вопросов нет, но для людей увы надо все разжевывать, если тут порой вопросы задают о том как 2+2 сложить средствами JavaScript то сомневаюсь что эта блоксхема будет им о чем-то говорить.

Gozar 13.08.2011 14:39

Цитата:

Сообщение от devote (Сообщение 120299)
тогда надо рисовать так что бы понял каждый, если даже понимающие с трудом понимают что там по нарисовано

Чтобы понял каждый, этот самый каждый должен почитать стандарт и по ссылкам, что я в ЧаВО 7 написал. Это написано в первом посте этой темы.

kobezzza 13.08.2011 14:42

Согласен с Gozar, что невозможно научить тех, кто не хочет учится. Мы же все как то разобрались с этим. Я наверно пол года потратил на на то, чтобы досконально всё это понять, т.е. я прикладывал усилия: читал книги, форумы, ходил на мастер-классы. А для тех, кто хочет просто делать "красивые менюшки" компания Adobe и Microsoft делает кучу мышководных программ. Нам же всем лучше, ибо цена на ЖС прогеров сейчас очень велика (потому что толковых реально мало!) и мы не бедствуем)

monolithed 13.08.2011 19:39

Цитата:

Сообщение от devote
Это понятно, проблема в том если ты хочешь начинающим прогерам показать как это все работает, тогда надо рисовать так что бы понял каждый, если даже понимающие с трудом понимают что там по нарисовано

в этом есть доля истины, но как заметил Gozar всем угодить не получится. К примеру раньше я не понимал, что пишет Д. Сошников, а теперь считаю его способ подачи материала идеальным, просто на это потребовалось время.
Цитата:

Сообщение от Gozar
Чтобы понял каждый, этот самый каждый должен почитать стандарт

самое сложное в любом языке, это понимание того что написано в стандарте)

0931454574 13.08.2011 21:15

Тоже самое что "тили тили, трали вали"

Gozar 13.08.2011 21:17

Цитата:

Сообщение от monolithed (Сообщение 120353)
просто на это потребовалось время.

Время в основном требуется на въезжание в подачу материала.

Спасибо за ссылку, я честно говоря не читал статью, теперь подумаю как изменить схему для улучшения восприятия.

B~Vladi 14.08.2011 00:05

Gozar, ты умный чувак, но с дизайном (как и я) не дружишь. Не в обиду :)
Я вот тоже ничего не понял :)

Я считаю, такие схемы нужно делить на части.

Цитата:

Сообщение от monolithed
что пишет Д. Сошников

Мне удалось с ним пообщаться на последнем DevConf. Не считая его отличнейшего доклада на этой конференции, он действительно ГУРУ, безо всякого преувеличения, да и вообще приятный человек в плане общения.

Gozar, обязательно в FAQ нужно добавить ссылки на его статьи.

Gozar 14.08.2011 00:32

Цитата:

Сообщение от B~Vladi (Сообщение 120392)
Gozar, ты умный чувак, но с дизайном (как и я) не дружишь. Не в обиду :)
Я вот тоже ничего не понял :)

Я считаю, такие схемы нужно делить на части.

С дизайном у меня всё ок, это черновой вариант(набросок).
Цитата:

Сообщение от B~Vladi (Сообщение 120392)
Gozar, обязательно в FAQ нужно добавить ссылки на его статьи.

ссылки на его статьи присутствуют в FAQ
7)2
7) 2.1

Добавил ещё ссылку в пункт 2.

B~Vladi 14.08.2011 01:01

Цитата:

Сообщение от Gozar
С дизайном у меня всё ок, это черновой вариант(набросок).

Дк ты кодер или дизайнер? Или как немо? :D

kobezzza 14.08.2011 03:39

Нашёл на просторах рунете, не смог удержаться:D

:haha: :haha: :haha:

Gozar 14.08.2011 11:22

Цитата:

Сообщение от B~Vladi (Сообщение 120401)
Дк ты кодер или дизайнер? Или как немо? :D

Я по образованию дизайнер, я уже говорил когда-то. Есть дизайнеры пришедшие из художников, а есть дизайнеры-технологи, так вот я последний.

Я не знаю что там у немо, я не следил за перепиской. Помню только то, что они чего-то не поделили с Gvozd и немо хотел купить форум.

Меня не удастся протроллить по поводу дизайна, во первых я точно знаю себе цену(на каком уровне я нахожусь), во вторых у меня достаточно большой список выполненных работ, чтобы мне вообще кого-то слушать. В третьих я хотел узнать не забыл ли я что-то отобразить на схеме, а так как никто не заметил что в Object.[[Class]] не указан Object, то не вижу смысла слушать кого-то дальше.

Схему я оставлю такой(вертикальной), только перерисую её более изящно и блоки чуть дальше. Ссылку я на Дмитрия Сошникова дал. Кто захочет разобраться посмотрит все схемы.

kobezzza,
В javascript нет классов.

kobezzza 14.08.2011 11:34

Цитата:

Сообщение от Gozar (Сообщение 120435)
kobezzza,
В javascript нет классов.

Опять 25:) Картинка вообще не об этом, а относится к теме "как научить того, кто не хочет". Выложил, т.к. задело за живое (вспомнил моих студенток):).

ЗЫ: а для споров и холиваров можно сделать отдельную темку и там в сласть обсуждать, что есть такое класс - абстракция на уровне языка или на уровне человека, тип string является примитивом или объектом, расширять прототип стандартных объектов плохо или хорошо и т.д.:)

Gozar 14.08.2011 12:31

Цитата:

Сообщение от kobezzza (Сообщение 120439)
Опять 25:) Картинка вообще не об этом, а относится к теме "как научить того, кто не хочет". Выложил, т.к. задело за живое (вспомнил моих студенток):).

Я не учу людей, которые не хотят, а по картинке не скажешь хочет она учиться или нет. Я встречал разных людей и некоторые выглядели ещё более мило и обучению поддавались хорошо.
Цитата:

Сообщение от kobezzza (Сообщение 120439)
ЗЫ: а для споров и холиваров можно сделать отдельную темку и там в сласть обсуждать, что есть такое класс - абстракция на уровне языка или на уровне человека

В javascript нет классов.
Это следует читать так:
В javascript нет классов и точка

x-yuri 14.08.2011 17:19

Цитата:

Сообщение от monolithed
самое сложное в любом языке, это понимание того что написано в стандарте)

самое сложное в стандарте - это как применить его на практике :)

Цитата:

Сообщение от monolithed
в этом есть доля истины, но как заметил Gozar всем угодить не получится. К примеру раньше я не понимал, что пишет Д. Сошников, а теперь считаю его способ подачи материала идеальным, просто на это потребовалось время.

ну да, идеальный... в том смысле, что подробнее некуда :)

Цитата:

Сообщение от Gozar
а так как никто не заметил что в Object.[[Class]] не указан Object, то не вижу смысла слушать кого-то дальше.

это всего лишь говорит о качестве схемы. Зачем не схеме столько информации? Что ты хотел показать на схеме?

Цитата:

Сообщение от B~Vladi
Я считаю, такие схемы нужно делить на части.

ты читаешь мои мысли :) Почему не сделать, например, так. Могу дать ai-исходник, если чё

Gozar 14.08.2011 17:38

Цитата:

Сообщение от x-yuri (Сообщение 120515)
это всего лишь говорит о качестве схемы. Зачем не схеме столько информации? Что ты хотел показать на схеме?

Очень часто в различных описаниях используются выражение "цепь прототипов" и "поднимаясь по цепи прототипов". Однако там же приводится нелинейная схема и тем более не отображено что мы поднимаемся по цепи.
Я наглядно изобразил цепь и подъем, на этом собственно говоря всё.

ps: информации не много, к тому же она однотипная и части можно закрывать ладонью, чтобы разбить схему на части.

x-yuri 14.08.2011 17:48

Цитата:

Сообщение от Gozar
ps: информации не много, к тому же она однотипная и части можно закрывать ладонью, чтобы разбить схему на части.

ну по-моему это очевидно, я даже сам все понял :) но может кто-то еще выскажется? И, собственно, чего не хватает на моей схеме?

Gozar 14.08.2011 18:05

Цитата:

Сообщение от x-yuri (Сообщение 120521)
И, собственно, чего не хватает на моей схеме?

Ну а по мне так очевидно, чего. Она не вертикальная и на ней не хватает очевидности того что помимо [[Prototype]] есть ещё [[Class]], [[Call]] и [[Scope]] и этим отличаются объекты друг от друга. Этот нюанс вносит ясность.

Пожалуй соглашусь, что моя схема перегружена и в ЧаВО вносить её не буду. Раздельное изложение материала более правильно. Ко всему прочему стрелка A.prototype.[[Prototype]] -> Object.prototype должна показывать однозначно, а тогда схема выглядит не очень.

Добавил схему x-yuri в ЧаВО, как наиболее удачную.

x-yuri 15.08.2011 01:32

Цитата:

Сообщение от x-yuri
самое сложное в стандарте - это как применить его на практике

Цитата:

Сообщение от x-yuri
ну да, идеальный... в том смысле, что подробнее некуда

вообще я это к тому, что люди делятся на две категории :) тех, которые развивают язык и тех, кто его использует. Я не считаю, что кто-то из них лучше. Я бы даже сказал, что они друг друга дополняют... но (извиняюсь за мой английский)

Цитата:

Сообщение от Gozar
Очень часто в различных описаниях используются выражение "цепь прототипов" и "поднимаясь по цепи прототипов". Однако там же приводится нелинейная схема и тем более не отображено что мы поднимаемся по цепи.
Я наглядно изобразил цепь и подъем, на этом собственно говоря всё.

ну давай все же выскажусь... я бы сказал, что ты изобразил ООП на схеме"и наглядно она показывает связь конструткор <-> конструктор.prototype. На моей же схеме наглядно показаны цепочки прототипов обьектов. На ней хорошо видна цепочка прототипов создаваемых объектов и, что у всех функций общий прототип. Остальные свойства не относятся к цепочке прототипов.

с моей точки зрения, основное назначение схем - показать то, что сложно описать словами. Нету идеального способа выражения мыслей, у каждого есть свои преимущества. Мне вспоминается, что Мартин Фаулер пишет в UML Distilled: есть три типа использования UML - эскиз, детальный план и язык программирования. Твоя схема - это скорее детальный план, моя - эскиз, который наглядно показывает то, что было бы сложно выразить словами.

x-yuri 30.01.2013 18:16

извиняюсь, кто-нибудь знает, что обозначает синий цвет на моей схеме? O.o

melky 30.01.2013 20:19

Цитата:

Сообщение от x-yuri (Сообщение 230493)
извиняюсь, кто-нибудь знает, что обозначает синий цвет на моей схеме? O.o

показывает [[Prototype]] функций, так?

x-yuri 30.01.2013 20:38

подчеркивает что все функции - это функции (потому что их прототип Function.prototype)? Так вроде не важно это на этой схеме. Почему не подчеркнуть, что все что там есть - это объекты (потому что все сводится к Object.prototype)? Может у меня рука дрогнула, когда схему делал... :)


Часовой пояс GMT +3, время: 07:05.