{"action":"created","issue":{"url":"https://api.github.com/repos/g1er/Andrew/issues/8","repository_url":"https://api.github.com/repos/g1er/Andrew","labels_url":"https://api.github.com/repos/g1er/Andrew/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/g1er/Andrew/issues/8/comments","events_url":"https://api.github.com/repos/g1er/Andrew/issues/8/events","html_url":"https://github.com/g1er/Andrew/issues/8","id":296964049,"number":8,"title":"Прототипы","user":{"login":"IgorKulishov","id":6174568,"avatar_url":"https://avatars2.githubusercontent.com/u/6174568?v=4","gravatar_id":"","url":"https://api.github.com/users/IgorKulishov","html_url":"https://github.com/IgorKulishov","followers_url":"https://api.github.com/users/IgorKulishov/followers","following_url":"https://api.github.com/users/IgorKulishov/following{/other_user}","gists_url":"https://api.github.com/users/IgorKulishov/gists{/gist_id}","starred_url":"https://api.github.com/users/IgorKulishov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IgorKulishov/subscriptions","organizations_url":"https://api.github.com/users/IgorKulishov/orgs","repos_url":"https://api.github.com/users/IgorKulishov/repos","events_url":"https://api.github.com/users/IgorKulishov/events{/privacy}","received_events_url":"https://api.github.com/users/IgorKulishov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"g1er","id":24845718,"avatar_url":"https://avatars3.githubusercontent.com/u/24845718?v=4","gravatar_id":"","url":"https://api.github.com/users/g1er","html_url":"https://github.com/g1er","followers_url":"https://api.github.com/users/g1er/followers","following_url":"https://api.github.com/users/g1er/following{/other_user}","gists_url":"https://api.github.com/users/g1er/gists{/gist_id}","starred_url":"https://api.github.com/users/g1er/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/g1er/subscriptions","organizations_url":"https://api.github.com/users/g1er/orgs","repos_url":"https://api.github.com/users/g1er/repos","events_url":"https://api.github.com/users/g1er/events{/privacy}","received_events_url":"https://api.github.com/users/g1er/received_events","type":"User","site_admin":false},"assignees":[{"login":"g1er","id":24845718,"avatar_url":"https://avatars3.githubusercontent.com/u/24845718?v=4","gravatar_id":"","url":"https://api.github.com/users/g1er","html_url":"https://github.com/g1er","followers_url":"https://api.github.com/users/g1er/followers","following_url":"https://api.github.com/users/g1er/following{/other_user}","gists_url":"https://api.github.com/users/g1er/gists{/gist_id}","starred_url":"https://api.github.com/users/g1er/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/g1er/subscriptions","organizations_url":"https://api.github.com/users/g1er/orgs","repos_url":"https://api.github.com/users/g1er/repos","events_url":"https://api.github.com/users/g1er/events{/privacy}","received_events_url":"https://api.github.com/users/g1er/received_events","type":"User","site_admin":false}],"milestone":null,"comments":4,"created_at":"2018-02-14T03:26:05Z","updated_at":"2018-02-15T08:00:20Z","closed_at":null,"author_association":"COLLABORATOR","body":"## Прототипы\r\n\"В дополнение к набору свойств, у всех конструкторов / классов в JavaScript есть свойство **prototype** (\"прототип\"), которое содержит набор свойств, которые будут унаследованы новыми объектами создаными на основе этих конструкторов / классов. \r\nПримечание: термин \"класс\" был введен в версии JavaScript ES6 для того что бы создать схожий с объектно-ориентированных языками синтаксис (название Class используется в Java, C# ).\r\n\r\nОбъекты созданные на базе конструкторов содержат свойство :\r\n```\r\n__proto__\r\n```\r\nэто свойство показывается историю происхождения.\r\n\r\n**Далее приведем примеры :**\r\n1) Откроем консоль и скопируем конструктор созданный тобою в предыдущем задании.\r\n```\r\nfunction Swimmer(style, distance) {\r\n\tthis.style = style;\r\n\tthis.distance = function() {\r\n\t\tconsole.log(\"This swimmer prefer \" + distance + \" \" + this.style)\r\n    }\r\n}\r\n```\r\nДалее вызовем свойство конструктора prototype:\r\n```\r\nSwimmer.prototype\r\n```\r\nРаскрой полученный объект - ты увидешь что там содержатся объекты: \"constructor\" и внутри его свойства \"prototype\".\r\n\r\n2) Теперь создадим объект lamer на основе конструктора Swimmer\r\n```\r\nvar lamer = new Swimmer('snaky', 10);\r\n```\r\nПосле чего просмотрим свойства объекта:\r\n\r\n```\r\nlamer.__proto__\r\n```\r\n - это свойство любого объекта (два нижних подчеркивания с обоих сторон) созданного на основе конструктора / класса, содержит свойства проторип конструктора от которого он произошел.\r\n\r\nЭто свойство не используется на прямую и как правило только используется браузером.\r\nНе рекомендуется использовать на прямую это свойство в коде.\r\n\r\n3) Добавим теперь по одному новому свойству и метод в существующий конструктор Swimmer используя следующий синтез:\r\n\r\n```\r\nSwimmer.prototype.record = ' world record ';\r\nSwimmer.prototype.training = function() {\r\n   console.log('To get ' + this.record + ' for ' + this.style + ' takes efforts ');\r\n}\r\n\r\nlamer.record;\r\n\r\nlamer.training();\r\n```\r\n\r\nКак мы видем новые свойство и метод объекта доступны несмотря на то что объект был определен ранее (до того как были присвоены новые свойство и метод). \r\n\r\nПоробуй с разными объектами, напиши свои вопросы.\r\n"},"comment":{"url":"https://api.github.com/repos/g1er/Andrew/issues/comments/365851125","html_url":"https://github.com/g1er/Andrew/issues/8#issuecomment-365851125","issue_url":"https://api.github.com/repos/g1er/Andrew/issues/8","id":365851125,"user":{"login":"IgorKulishov","id":6174568,"avatar_url":"https://avatars2.githubusercontent.com/u/6174568?v=4","gravatar_id":"","url":"https://api.github.com/users/IgorKulishov","html_url":"https://github.com/IgorKulishov","followers_url":"https://api.github.com/users/IgorKulishov/followers","following_url":"https://api.github.com/users/IgorKulishov/following{/other_user}","gists_url":"https://api.github.com/users/IgorKulishov/gists{/gist_id}","starred_url":"https://api.github.com/users/IgorKulishov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IgorKulishov/subscriptions","organizations_url":"https://api.github.com/users/IgorKulishov/orgs","repos_url":"https://api.github.com/users/IgorKulishov/repos","events_url":"https://api.github.com/users/IgorKulishov/events{/privacy}","received_events_url":"https://api.github.com/users/IgorKulishov/received_events","type":"User","site_admin":false},"created_at":"2018-02-15T08:00:20Z","updated_at":"2018-02-15T08:00:20Z","author_association":"COLLABORATOR","body":"Еще интересный оператор, который возвращает протип конструктора конструктора который его создал: \"Object.getPrototypeOf(objectName)\".\r\nМожно провести интересный эксперимент\r\nа) извлечь прототив из lamer :Object.getPrototypeOf(lamer)\r\nb) добавить свойство через prototype: \r\nSwimmer.prototype.weight = function(weight) {\r\n return weight;\r\n}\r\nc) еще раз извлечь прототив из lamer :Object.getPrototypeOf(lamer)\r\nНа этот раз мы увидем что добавился weight: f"}}
{"actor":{"display_login":"IgorKulishov"}}