1 00:00:01,187 --> 00:00:03,173 დავბრუნდით ვინსტონების შემქმნელ პროგრამაში, 2 00:00:03,173 --> 00:00:07,589 მაგრამ მე დავამატე ახალი ობიექტი - ჰოპერი, რადგან ჰოპერი 3 00:00:07,589 --> 00:00:11,924 თავს გამოტოვებულად გრძნობდა. მას ვინსტონის მსგავსად განვმარტავ, 4 00:00:11,924 --> 00:00:15,843 ვიწყებ კონსტრუქციული ფუნქციით და იგივე თვისებებით, დახატვით, 5 00:00:15,843 --> 00:00:23,808 ლაპარაკით და კიდევ დავამატე ფუნქცია "ვაშა" რადგან ჰოპერები სიხარულს გამოხატავენ. 6 00:00:23,808 --> 00:00:31,174 ფუნქციის ბოლოში შევქმენი ორი ახალი ჰოპერის ობიექტი: პატარა ჰოპერი და დიდი ჰოპერი. 7 00:00:31,174 --> 00:00:35,347 დავხატე ისინი, ერთზე გამოვიძახე "ლაპარაკი", მეორეზე - "ვაშა". 8 00:00:35,347 --> 00:00:37,508 ძალიან კარგი. 9 00:00:37,508 --> 00:00:39,928 ახლა, ამ კოდს თუ დაუკვირდებით, 10 00:00:39,928 --> 00:00:41,823 შესაძლოა საინტერესო რამ შენიშნოთ. 11 00:00:41,973 --> 00:00:52,324 ჰოპერის კოდი ძალიან ჰგავს ვინსტონისას. დაუკვირდით კონსტრუქტორს, ზუსტად იგივეა. 12 00:00:52,324 --> 00:01:00,748 ლაპარაკის ფუნქციაც ზუსტად შეესაბამება ვინსტონის ლაპარაკის ფუნქციას, 13 00:01:00,763 --> 00:01:03,897 ასევე, ორივეს აქვს დახატვის ფუნქცია. 14 00:01:03,897 --> 00:01:07,922 ესეიგი ამ ორ ობიექტს ბევრი საერთო აქვს, 15 00:01:07,922 --> 00:01:12,601 ეს იმიტომ, რომ ჰოპერი და ვინსტონი ძალიან მსგავსი ობიექტის ტიპებია. 16 00:01:12,601 --> 00:01:15,299 თუ დაუფიქრდებით, ნამდვილ სამყაროში, 17 00:01:15,299 --> 00:01:21,423 კომპიუტერს გარეთ ობიექტების უმეტესობას სხვა ობიექტებთან რაღაც საერთო აქვს. 18 00:01:21,423 --> 00:01:23,643 მაგალითად, ცხოველთა სამეფო. 19 00:01:23,643 --> 00:01:26,812 ყველა ცხოველი მსგავსია, მაგრამ ისინი სხვადასხვა ტიპისანი არიან, 20 00:01:26,812 --> 00:01:31,588 როგორც ადამიანები. ადამიანებსაც აქვთ ეს მსგავსებები, 21 00:01:31,588 --> 00:01:34,331 მაგრამ მათ თავიანთი უნიკალური თვისებებიც გააჩნიათ. 22 00:01:34,331 --> 00:01:41,647 ესეიგი ცხოველი ობიექტის ტიპია, რომლისგან ადამიანის ობიექტის ტიპი თვისებებს იძენს. 23 00:01:41,647 --> 00:01:46,864 ნულიდან დაწყება არ გვიწევს, ცხოველების არსებულ თვისებებს ჩვენსას ვუმტებთ. 24 00:01:46,864 --> 00:01:49,196 ყველა ცხოველი უშვებს ხმას, 25 00:01:49,196 --> 00:01:51,407 ადამიანებს კი ენაც აქვთ. 26 00:01:51,407 --> 00:01:56,695 ეს ობიექტის მემკვიდრეობითობა პროგრამირებაშიც ძალიან გამოსადეგია. 27 00:01:56,695 --> 00:01:59,865 Javascript შეგვიძლია მემკვიდრეობის ჯაჭვი შევქმნათ. 28 00:01:59,865 --> 00:02:04,425 უნდა მოვიფიქროთ რა არის საერთო ობიექტის ტიპებს შორის 29 00:02:04,425 --> 00:02:06,633 და მოვიფიქროთ კარგი სახელი, 30 00:02:06,633 --> 00:02:08,675 რადგან უნდა შევქმნათ ახალი ობიექტის ტიპი, 31 00:02:08,675 --> 00:02:10,576 რომელიც წარმოადგენს საფუძველ ობიექტს, 32 00:02:10,576 --> 00:02:12,094 ამიტომ დავარქვათ "არსებები". 33 00:02:12,094 --> 00:02:13,873 ორივე არსებაა. 34 00:02:13,873 --> 00:02:17,831 ესეიგი ვამბობთ var არსება უდრის. ახლა გვჭირდება კონსტრუქტორი ფუნქცია. 35 00:02:17,831 --> 00:02:22,342 მოდი უბრალოდ ჰოპერის მოვიპაროთ, რაც იგივე ვინსტონისაა. 36 00:02:22,342 --> 00:02:23,762 კარგი. 37 00:02:23,762 --> 00:02:27,172 ახლა, ვნახოთ... 38 00:02:27,172 --> 00:02:28,135 ახლა გვინდა... 39 00:02:28,135 --> 00:02:29,506 ახლა რისი გაკეთება გვინდა? 40 00:02:29,506 --> 00:02:31,966 ალბათ, ჯობს ფუნქცია "ლაპარაკი" დავამატოთ. 41 00:02:31,966 --> 00:02:39,303 "ლაპარაკი" ფუნქციისთვის ისევ ჰოპერს მოვპაროთ. ჯერ არსების პროტოტიპს მოვარგებთ. 42 00:02:39,303 --> 00:02:41,683 ძალიან კარგი. 43 00:02:41,683 --> 00:02:45,300 ახლა გვაქვს არსების ობიექტის ტიპი. 44 00:02:45,300 --> 00:02:53,830 საჭიროა ჰოპერს ვუთხრათ რომ ის "არსების" საფიძველში უნდა იყოს. 45 00:02:53,830 --> 00:03:02,015 დავწეროთ Hopper.prototype = object.create 46 00:03:02,015 --> 00:03:04,977 creature.prototype 47 00:03:04,977 --> 00:03:14,197 Javascript-ს ჰოპერის ფუნქციონალურობას ეს ხაზი "არსების" პროტოტიპზე დააფუძნებინებს. 48 00:03:14,197 --> 00:03:22,342 ესეიგი ჰოპერის ფუნქციის მოძებნისას ჯერ ნახავს ჰოპერის პროტოტიპს, 49 00:03:22,342 --> 00:03:26,429 თუ აქ ვერ იპოვის, შემდეგ მოძებნის არსების პროტოტიპში. 50 00:03:26,429 --> 00:03:29,196 ამას ეწოდება პროტოტიპის ჯაჭვი. 51 00:03:29,196 --> 00:03:35,634 ამის გაკეთების შემდეგ შეგვიძლია ჰოპერის ლაპარაკის ფუნქციის წაშლა, 52 00:03:35,634 --> 00:03:38,302 რადგან ის უკვე არსებას გააჩნია, 53 00:03:38,302 --> 00:03:40,231 რომელიც პროტოტიპის ჯაჭვში ზემოთაა. 54 00:03:40,231 --> 00:03:42,021 მზად ხართ? 55 00:03:42,021 --> 00:03:43,924 იმუშავა! 56 00:03:43,924 --> 00:03:48,864 მუშაობს, რადგან პოულობს არსების პროტოტიპში. 57 00:03:48,864 --> 00:03:54,654 ახლა ვინსტონის წაშლაც ვცადოთ. 58 00:03:54,654 --> 00:03:57,680 წერია რომ ობიექტს არ აქვს ლაპარაკის მეთოდი. 59 00:03:57,680 --> 00:04:01,263 რატომ? იმიტომ რომ გვაქვს ვინსტონის კონსტრუქტორი, 60 00:04:01,263 --> 00:04:03,517 დახატვა, ლაპარაკი კი მოვაშორეთ. 61 00:04:03,517 --> 00:04:08,509 დაგვავიწყდა რომ ვინსტონის პროტოტიპი არსების პროტოტიპზე დაგვეფუძნებინა. 62 00:04:08,509 --> 00:04:10,711 ეს ხაზიც აუცილებელია. 63 00:04:10,711 --> 00:04:14,383 Winston.prototype=object.create 64 00:04:14,383 --> 00:04:17,614 creature.prototype. 65 00:04:17,614 --> 00:04:19,110 ესეც ასე! 66 00:04:19,110 --> 00:04:20,426 დაუკვირდით იმას, რომ 67 00:04:20,426 --> 00:04:27,438 ეს ხაზი კონსტრუქტორი ფუნქციის შემდეგაა, მაგრამ ნებისმიერი სხვა რამის დამატებამდე. 68 00:04:27,438 --> 00:04:29,334 სწორედ ამისი გაკეთებაა საჭირო. 69 00:04:29,334 --> 00:04:33,800 ამით ვამბობთ თუ რაზე იქნება საწყისი პროტოტიპი დაფუძნებული. 70 00:04:33,860 --> 00:04:36,804 პროტოტიპს კიდევ რაღაცებს ვამატებთ, 71 00:04:36,804 --> 00:04:41,673 რადგან შესაძლოა რამე უნიკალური იყოს ვინსტონში, ან ჰოპერში, 72 00:04:41,673 --> 00:04:43,909 რაც ზოგადად არსებებს არ ახასიათებთ. 73 00:04:43,909 --> 00:04:45,405 ანუ მათი განმარტვა დაშვებულია. 74 00:04:46,505 --> 00:04:50,256 თუ დავუკვირდებით, გარკვეული კოდი ისევ მეორდება. 75 00:04:50,256 --> 00:04:51,524 კონსტრუქტორი კოდი. 76 00:04:51,524 --> 00:04:53,366 ეს სამჯერაა დაწერილი. 77 00:04:53,366 --> 00:04:58,038 შეგვიძლია უბრალოდ წაშლა? 78 00:04:58,038 --> 00:05:00,840 ვცადოთ. 79 00:05:00,840 --> 00:05:03,509 როგორც ჩანს არ იმუშავა. 80 00:05:03,509 --> 00:05:07,340 ჰოპერი მარცხენა ზედა კუთხეშია, თითქოს ყველაფერი დაავიწყდა. 81 00:05:07,340 --> 00:05:15,884 Javascript არ თვლის რომ იგივე კონსტრუქტორი გინდა, რადგან პროტოტიპი მასზე დააფუძნე. 82 00:05:15,884 --> 00:05:19,359 საშუალებას გაძლევს შენ თვითონ განსაზღვრო კონსტრუქტორი ამ ობიექტებისთვის. 83 00:05:19,359 --> 00:05:26,398 ასევე, იძლევა მარტივ გზას კონსტრუქტორის ობიექტიდან გამოძახებისთვის. 84 00:05:26,398 --> 00:05:27,766 ასე მოვიქცეთ: 85 00:05:27,766 --> 00:05:35,470 დავწეროთ creature.callthis,nickname,age,x,y 86 00:05:35,470 --> 00:05:40,598 ეს ასეთ რამეს აკეთებს (იმუშავა!), 87 00:05:40,598 --> 00:05:43,679 იძახებს არსების ფუნქციას და კონსტრუქტორ ფუნქციას. 88 00:05:43,679 --> 00:05:49,019 იძახებს ფუნქციას და ეუბნება რომ გამოიძახოს კონსტრუქტორი ფუნქცია, 89 00:05:49,019 --> 00:05:56,968 თითქოს ის ობიექტი ჰოპერიდან იყოს ამ არგუმენტებით გამოძახებული. 90 00:05:56,968 --> 00:05:59,427 ეს ის არგუმენტებია, რითაც ვიძახებთ ჰოპერს. 91 00:05:59,427 --> 00:06:03,589 საბოლოოდ ეს კოდი შესრულდება, თითქოს აქ ეწერა. 92 00:06:03,589 --> 00:06:06,257 ჩვენც სწორედ ეს გვინდა. იმუშავა. 93 00:06:06,257 --> 00:06:13,757 შეგვიძლია ეს ხაზიც ვინსტონის კონსტრუქტორში გადავაკოპიროთ. 94 00:06:13,757 --> 00:06:16,531 მუშაობს! ძალიან კარგი! 95 00:06:16,531 --> 00:06:24,901 საერთო თვისებები და ფუნქციები ამ ერთ ობიექტის ტიპში მოვაქციეთ 96 00:06:24,901 --> 00:06:28,207 და შევქმენით ამ საბაზისო ობიექტზე დაფუძნებული ორი ობიექტის ტიპი. 97 00:06:28,207 --> 00:06:30,981 ისინი გარკვეულ ფუნქციებს იღებენ, ზოგს კი თვითონ ამატებენ. 98 00:06:30,981 --> 00:06:36,339 ეს ძალიან მოსახერხებელია, რადგან საზიარო ფუნქციების შეცვლა ერთ ადგილას შეიძლება. 99 00:06:36,339 --> 00:06:40,302 ასაკის შეცვლა რომ გვინდოდეს, მივუწერდით "წლის". 100 00:06:40,302 --> 00:06:43,908 ახლა ყველას "წლის" აქვს მიწერილი ასაკთან. 101 00:06:43,908 --> 00:06:49,871 შეგვიძლია "ლაპარაკი" ფუნქცია "woo" ფუნქციით შევცვალოთ.. 102 00:06:49,871 --> 00:06:57,174 რადგან უკვე იხილეთ როგორ იქმნება ობიექტის ტიპები და როგორ მუშაობს მემკვიდრეობითობა, 103 00:06:57,174 --> 00:07:01,348 მოიფიქრეთ როგორ გამოდგება ეს თამაშების, ნახატების, ანიმაციებისთვის და ა.შ. 104 00:07:01,348 --> 00:07:05,257 მაგალითად, შეიძლება გქონდეს თამაში და ბევრი ტიპის პერსონაჟი, 105 00:07:05,257 --> 00:07:07,683 ყველას შეეძლოს სირბილი მაგრამ მოლოდ ზოგს - ახტომა. 106 00:07:07,683 --> 00:07:11,970 ეს მშვენიერი ადგილია ობიექტის ტიპებისა და მემკვიდრეობითობისთვის. 107 00:07:11,970 --> 00:07:15,970 ალბათ თქვენ კიდევ უამრავი გამოყენების მოფიქრებას შეძლებთ.