0:00:01.187,0:00:03.173 დავბრუნდით ვინსტონების[br]შემქმნელ პროგრამაში, 0:00:03.173,0:00:07.589 მაგრამ მე დავამატე ახალი[br]ობიექტი - ჰოპერი, რადგან ჰოპერი 0:00:07.589,0:00:11.924 თავს გამოტოვებულად გრძნობდა.[br]მას ვინსტონის მსგავსად განვმარტავ, 0:00:11.924,0:00:15.843 ვიწყებ კონსტრუქციული ფუნქციით[br]და იგივე თვისებებით, დახატვით, 0:00:15.843,0:00:23.808 ლაპარაკით და კიდევ დავამატე ფუნქცია "ვაშა"[br]რადგან ჰოპერები სიხარულს გამოხატავენ. 0:00:23.808,0:00:31.174 ფუნქციის ბოლოში შევქმენი ორი ახალი ჰოპერის[br]ობიექტი: პატარა ჰოპერი და დიდი ჰოპერი. 0:00:31.174,0:00:35.347 დავხატე ისინი, ერთზე[br]გამოვიძახე "ლაპარაკი", მეორეზე - "ვაშა". 0:00:35.347,0:00:37.508 ძალიან კარგი. 0:00:37.508,0:00:39.928 ახლა, ამ კოდს თუ დაუკვირდებით, 0:00:39.928,0:00:41.823 შესაძლოა საინტერესო რამ შენიშნოთ. 0:00:41.973,0:00:52.324 ჰოპერის კოდი ძალიან ჰგავს ვინსტონისას.[br]დაუკვირდით კონსტრუქტორს, ზუსტად იგივეა. 0:00:52.324,0:01:00.748 ლაპარაკის ფუნქციაც ზუსტად[br]შეესაბამება ვინსტონის ლაპარაკის ფუნქციას, 0:01:00.763,0:01:03.897 ასევე, ორივეს აქვს დახატვის ფუნქცია. 0:01:03.897,0:01:07.922 ესეიგი ამ ორ ობიექტს ბევრი საერთო აქვს, 0:01:07.922,0:01:12.601 ეს იმიტომ, რომ ჰოპერი და ვინსტონი[br]ძალიან მსგავსი ობიექტის ტიპებია. 0:01:12.601,0:01:15.299 თუ დაუფიქრდებით, ნამდვილ სამყაროში, 0:01:15.299,0:01:21.423 კომპიუტერს გარეთ ობიექტების უმეტესობას[br]სხვა ობიექტებთან რაღაც საერთო აქვს. 0:01:21.423,0:01:23.643 მაგალითად, ცხოველთა სამეფო. 0:01:23.643,0:01:26.812 ყველა ცხოველი მსგავსია, მაგრამ[br]ისინი სხვადასხვა ტიპისანი არიან, 0:01:26.812,0:01:31.588 როგორც ადამიანები.[br]ადამიანებსაც აქვთ ეს მსგავსებები, 0:01:31.588,0:01:34.331 მაგრამ მათ თავიანთი[br]უნიკალური თვისებებიც გააჩნიათ. 0:01:34.331,0:01:41.647 ესეიგი ცხოველი ობიექტის ტიპია, რომლისგან[br]ადამიანის ობიექტის ტიპი თვისებებს იძენს. 0:01:41.647,0:01:46.864 ნულიდან დაწყება არ გვიწევს, ცხოველების[br]არსებულ თვისებებს ჩვენსას ვუმტებთ. 0:01:46.864,0:01:49.196 ყველა ცხოველი უშვებს ხმას, 0:01:49.196,0:01:51.407 ადამიანებს კი ენაც აქვთ. 0:01:51.407,0:01:56.695 ეს ობიექტის მემკვიდრეობითობა[br]პროგრამირებაშიც ძალიან გამოსადეგია. 0:01:56.695,0:01:59.865 Javascript შეგვიძლია[br]მემკვიდრეობის ჯაჭვი შევქმნათ. 0:01:59.865,0:02:04.425 უნდა მოვიფიქროთ რა არის[br]საერთო ობიექტის ტიპებს შორის 0:02:04.425,0:02:06.633 და მოვიფიქროთ კარგი სახელი, 0:02:06.633,0:02:08.675 რადგან უნდა შევქმნათ ახალი ობიექტის ტიპი, 0:02:08.675,0:02:10.576 რომელიც წარმოადგენს საფუძველ ობიექტს, 0:02:10.576,0:02:12.094 ამიტომ დავარქვათ "არსებები". 0:02:12.094,0:02:13.873 ორივე არსებაა. 0:02:13.873,0:02:17.831 ესეიგი ვამბობთ var არსება უდრის.[br]ახლა გვჭირდება კონსტრუქტორი ფუნქცია. 0:02:17.831,0:02:22.342 მოდი უბრალოდ ჰოპერის[br]მოვიპაროთ, რაც იგივე ვინსტონისაა. 0:02:22.342,0:02:23.762 კარგი. 0:02:23.762,0:02:27.172 ახლა, ვნახოთ... 0:02:27.172,0:02:28.135 ახლა გვინდა... 0:02:28.135,0:02:29.506 ახლა რისი გაკეთება გვინდა? 0:02:29.506,0:02:31.966 ალბათ, ჯობს ფუნქცია "ლაპარაკი" დავამატოთ. 0:02:31.966,0:02:39.303 "ლაპარაკი" ფუნქციისთვის ისევ ჰოპერს[br]მოვპაროთ. ჯერ არსების პროტოტიპს მოვარგებთ. 0:02:39.303,0:02:41.683 ძალიან კარგი. 0:02:41.683,0:02:45.300 ახლა გვაქვს არსების ობიექტის ტიპი. 0:02:45.300,0:02:53.830 საჭიროა ჰოპერს ვუთხრათ რომ[br]ის "არსების" საფიძველში უნდა იყოს. 0:02:53.830,0:03:02.015 დავწეროთ Hopper.prototype = object.create 0:03:02.015,0:03:04.977 creature.prototype 0:03:04.977,0:03:14.197 Javascript-ს ჰოპერის ფუნქციონალურობას ეს[br]ხაზი "არსების" პროტოტიპზე დააფუძნებინებს. 0:03:14.197,0:03:22.342 ესეიგი ჰოპერის ფუნქციის მოძებნისას[br]ჯერ ნახავს ჰოპერის პროტოტიპს, 0:03:22.342,0:03:26.429 თუ აქ ვერ იპოვის, შემდეგ[br]მოძებნის არსების პროტოტიპში. 0:03:26.429,0:03:29.196 ამას ეწოდება პროტოტიპის ჯაჭვი. 0:03:29.196,0:03:35.634 ამის გაკეთების შემდეგ შეგვიძლია[br]ჰოპერის ლაპარაკის ფუნქციის წაშლა, 0:03:35.634,0:03:38.302 რადგან ის უკვე არსებას გააჩნია, 0:03:38.302,0:03:40.231 რომელიც პროტოტიპის ჯაჭვში ზემოთაა. 0:03:40.231,0:03:42.021 მზად ხართ? 0:03:42.021,0:03:43.924 იმუშავა! 0:03:43.924,0:03:48.864 მუშაობს, რადგან[br]პოულობს არსების პროტოტიპში. 0:03:48.864,0:03:54.654 ახლა ვინსტონის წაშლაც ვცადოთ. 0:03:54.654,0:03:57.680 წერია რომ ობიექტს[br]არ აქვს ლაპარაკის მეთოდი. 0:03:57.680,0:04:01.263 რატომ? იმიტომ რომ[br]გვაქვს ვინსტონის კონსტრუქტორი, 0:04:01.263,0:04:03.517 დახატვა, ლაპარაკი კი მოვაშორეთ. 0:04:03.517,0:04:08.509 დაგვავიწყდა რომ ვინსტონის პროტოტიპი[br]არსების პროტოტიპზე დაგვეფუძნებინა. 0:04:08.509,0:04:10.711 ეს ხაზიც აუცილებელია. 0:04:10.711,0:04:14.383 Winston.prototype=object.create 0:04:14.383,0:04:17.614 creature.prototype. 0:04:17.614,0:04:19.110 ესეც ასე! 0:04:19.110,0:04:20.426 დაუკვირდით იმას, რომ 0:04:20.426,0:04:27.438 ეს ხაზი კონსტრუქტორი ფუნქციის შემდეგაა,[br]მაგრამ ნებისმიერი სხვა რამის დამატებამდე. 0:04:27.438,0:04:29.334 სწორედ ამისი გაკეთებაა საჭირო. 0:04:29.334,0:04:33.800 ამით ვამბობთ თუ რაზე იქნება[br]საწყისი პროტოტიპი დაფუძნებული. 0:04:33.860,0:04:36.804 პროტოტიპს კიდევ რაღაცებს ვამატებთ, 0:04:36.804,0:04:41.673 რადგან შესაძლოა რამე[br]უნიკალური იყოს ვინსტონში, ან ჰოპერში, 0:04:41.673,0:04:43.909 რაც ზოგადად არსებებს არ ახასიათებთ. 0:04:43.909,0:04:45.405 ანუ მათი განმარტვა დაშვებულია. 0:04:46.505,0:04:50.256 თუ დავუკვირდებით,[br]გარკვეული კოდი ისევ მეორდება. 0:04:50.256,0:04:51.524 კონსტრუქტორი კოდი. 0:04:51.524,0:04:53.366 ეს სამჯერაა დაწერილი. 0:04:53.366,0:04:58.038 შეგვიძლია უბრალოდ წაშლა? 0:04:58.038,0:05:00.840 ვცადოთ. 0:05:00.840,0:05:03.509 როგორც ჩანს არ იმუშავა. 0:05:03.509,0:05:07.340 ჰოპერი მარცხენა ზედა კუთხეშია,[br]თითქოს ყველაფერი დაავიწყდა. 0:05:07.340,0:05:15.884 Javascript არ თვლის რომ იგივე კონსტრუქტორი[br]გინდა, რადგან პროტოტიპი მასზე დააფუძნე. 0:05:15.884,0:05:19.359 საშუალებას გაძლევს შენ თვითონ განსაზღვრო[br]კონსტრუქტორი ამ ობიექტებისთვის. 0:05:19.359,0:05:26.398 ასევე, იძლევა მარტივ გზას[br]კონსტრუქტორის ობიექტიდან გამოძახებისთვის. 0:05:26.398,0:05:27.766 ასე მოვიქცეთ: 0:05:27.766,0:05:35.470 დავწეროთ[br]creature.callthis,nickname,age,x,y 0:05:35.470,0:05:40.598 ეს ასეთ რამეს აკეთებს (იმუშავა!), 0:05:40.598,0:05:43.679 იძახებს არსების[br]ფუნქციას და კონსტრუქტორ ფუნქციას. 0:05:43.679,0:05:49.019 იძახებს ფუნქციას და ეუბნება[br]რომ გამოიძახოს კონსტრუქტორი ფუნქცია, 0:05:49.019,0:05:56.968 თითქოს ის ობიექტი ჰოპერიდან[br]იყოს ამ არგუმენტებით გამოძახებული. 0:05:56.968,0:05:59.427 ეს ის არგუმენტებია, რითაც ვიძახებთ ჰოპერს. 0:05:59.427,0:06:03.589 საბოლოოდ ეს კოდი[br]შესრულდება, თითქოს აქ ეწერა. 0:06:03.589,0:06:06.257 ჩვენც სწორედ ეს გვინდა. იმუშავა. 0:06:06.257,0:06:13.757 შეგვიძლია ეს ხაზიც ვინსტონის[br]კონსტრუქტორში გადავაკოპიროთ. 0:06:13.757,0:06:16.531 მუშაობს! ძალიან კარგი! 0:06:16.531,0:06:24.901 საერთო თვისებები და ფუნქციები[br]ამ ერთ ობიექტის ტიპში მოვაქციეთ 0:06:24.901,0:06:28.207 და შევქმენით ამ საბაზისო ობიექტზე[br]დაფუძნებული ორი ობიექტის ტიპი. 0:06:28.207,0:06:30.981 ისინი გარკვეულ ფუნქციებს[br]იღებენ, ზოგს კი თვითონ ამატებენ. 0:06:30.981,0:06:36.339 ეს ძალიან მოსახერხებელია, რადგან საზიარო[br]ფუნქციების შეცვლა ერთ ადგილას შეიძლება. 0:06:36.339,0:06:40.302 ასაკის შეცვლა რომ[br]გვინდოდეს, მივუწერდით "წლის". 0:06:40.302,0:06:43.908 ახლა ყველას "წლის" აქვს მიწერილი ასაკთან. 0:06:43.908,0:06:49.871 შეგვიძლია "ლაპარაკი"[br]ფუნქცია "woo" ფუნქციით შევცვალოთ.. 0:06:49.871,0:06:57.174 რადგან უკვე იხილეთ როგორ იქმნება ობიექტის[br]ტიპები და როგორ მუშაობს მემკვიდრეობითობა, 0:06:57.174,0:07:01.348 მოიფიქრეთ როგორ გამოდგება ეს თამაშების,[br]ნახატების, ანიმაციებისთვის და ა.შ. 0:07:01.348,0:07:05.257 მაგალითად, შეიძლება გქონდეს[br]თამაში და ბევრი ტიპის პერსონაჟი, 0:07:05.257,0:07:07.683 ყველას შეეძლოს სირბილი[br]მაგრამ მოლოდ ზოგს - ახტომა. 0:07:07.683,0:07:11.970 ეს მშვენიერი ადგილია ობიექტის[br]ტიპებისა და მემკვიდრეობითობისთვის. 0:07:11.970,0:07:15.970 ალბათ თქვენ კიდევ უამრავი[br]გამოყენების მოფიქრებას შეძლებთ.