1 00:00:00,780 --> 00:00:06,234 წინა გაკვეთილში ვისაუბრეთ ობიექტის ტიპების შექმნაზე 2 00:00:06,234 --> 00:00:09,234 და მათ ინიციალიზაციაზე კონსტრუქტორებით. 3 00:00:09,234 --> 00:00:13,472 ობიექტის ტიპი არაა აუცილებელი მხოლოდ თვისებებთან იყოს ასოცირებული 4 00:00:13,472 --> 00:00:18,806 შესაძლოა ასევე მისი ფუნქციონალურობასთან ასოცირება. შეხედე სამყაროს ობიექტის ტიპებს 5 00:00:18,806 --> 00:00:26,287 მაგალითად, ჩვენ. გვაქვს სიმაღლე, ასაკი, მაგრამ ასევე ვიძინებთ, ვჭამთ, კოდს ვწერთ. 6 00:00:26,287 --> 00:00:30,939 გვინდა რომ ეს ფუნქციები იმ ობიექტის ტიპებს შევუსაბამოთ. 7 00:00:30,939 --> 00:00:35,949 ამ პროგრამაში, რომელსაც წინა ვიდეოში ვაკეთებდით, გვქვს ფუნქცია 8 00:00:35,949 --> 00:00:41,826 drawWinston, რომელსაც ორივე ვინსტონ ობიექტზე ვიძახებთ. კარგი არ იქნებოდა, რომ 9 00:00:41,826 --> 00:00:48,569 ეს პირდაპირ ვინსტონის ობიექტის ტიპს მივაბათ? შეგვიძლია და მარტივია. 10 00:00:48,569 --> 00:00:55,725 ჩვენს კონსტრუქტორს ქვემოთ, დავწერთ Winston.prototype, 11 00:00:55,725 --> 00:00:59,232 prototype ალბათ ახალი სიტყვაა რომელიც ადრე არ გინახავთ. 12 00:00:59,232 --> 00:01:05,881 prototype არის ობიექტის თვისება, რომელსაც შეგვიძლია ფუნქციები მივუკავშიროთ 13 00:01:05,881 --> 00:01:13,309 და ნებისმიერ მასზე დაფუძნებულ ობიექტს ასევე ექნება ეს ფუნქციები. 14 00:01:13,309 --> 00:01:21,052 შეგვიძლია დავწეროთ .prototype, შემდეგ წერტილი და ფუნქციის სახელი, draw უდრის, 15 00:01:21,052 --> 00:01:28,546 შემდეგ კი ავიღოთ ჩვენი drawWinston კოდი და ჩავსვათ აქ. 16 00:01:28,546 --> 00:01:35,311 ჩვენ ახლა დახატვის ფუნქცია დავუკავშირეთ Winston-ის პროტოტიპს. 17 00:01:35,311 --> 00:01:40,008 ეს იმას ნიშნავს, რომ Winston-ის ტიპის ობიექტებზე draw()-ს გამოძახება შეგვეძლება. 18 00:01:40,008 --> 00:01:45,411 ესეიგი winstonTeen-ზე ან winstonAdult-ზე draw()-ს გამოძახება უნდა შეგვეძლოს. 19 00:01:45,411 --> 00:01:49,569 ასეთ ფუნქციას, რომელიც შეგვიძლია ობიექტზე გამოვიძახოთ, 20 00:01:49,569 --> 00:01:54,833 ვუწოდებთ "მეთოდს", ამიტომ ამიერიდან ალბათ მეთოდს უფრო ხშირად ვიტყვი. 21 00:01:54,833 --> 00:01:58,272 ესეიგი, ეს არის draw მეთოდი. 22 00:01:58,272 --> 00:02:04,103 ახლა ამას წავშლით და ვნახოთ შევძლებთ თუ არა draw()-ს გამოძახებას. 23 00:02:04,103 --> 00:02:07,069 winstonTeen.draw() 24 00:02:07,069 --> 00:02:13,697 კარგი, შეცდომა გვაქვს, გვეუბნება რომ winsObject არ არის განმარტებული. 25 00:02:13,697 --> 00:02:20,530 კარგი, აქამდე არგუმენტს drawWinston-ს გადავცემდით, რომელიც Winston ობიექტი იყო 26 00:02:20,530 --> 00:02:26,462 ახლა კი ამას აღარ ვაკეთებთ. შეგვიძლია შევცვალოთ გადასაცემად 27 00:02:26,462 --> 00:02:30,819 და შემდეგ.. აქ რა უნდა გადავცეთ? უნდა გადავცეთ winstonTeen. 28 00:02:30,819 --> 00:02:38,441 იმუშავა, მაგრამ სასაცილო ჩანს. ობიექტზე draw-ს ისედაც ვიძახებ. 29 00:02:38,441 --> 00:02:43,965 არაა აუცილებელი ობიექტის გადაცემაც, გამეორებაა. 30 00:02:43,965 --> 00:02:48,465 ესეიგი ეს არ უნდა გავაკეთოთ, ამიტომ წავშალოთ აქედან. 31 00:02:48,465 --> 00:02:54,404 თუ ობიექტში ვართ, რა შეგვიძლია გამოვიყენოთ რომ დავუკავშირდეთ ობიექტის თვისებებს? 32 00:02:54,404 --> 00:03:00,374 შესაძლოა კონსტრუქტორს შეხედოთ და გაიხსენოთ სპეციალური სიტყვა "this" და იფიქროთ: 33 00:03:00,374 --> 00:03:08,573 "იქნებ ამის მაგივრად "this" დავწერო!" შევცვალოთ winsObject და დავწეროთ "this". 34 00:03:08,573 --> 00:03:12,951 ეს იმიტომ, რომ ახლა ობიექტში ვართ. ფუნქცია ობიექტზეა გამოძახებული, 35 00:03:12,951 --> 00:03:16,861 ამიტომ "this" მიმდინარე ობიექტს შეეხება. 36 00:03:16,861 --> 00:03:23,271 ესეიგი, შეგიძლია დაწერო "this" და მიიღო წვდომა მიმდინარე ობიექტის თვისებებზე. 37 00:03:23,271 --> 00:03:26,720 მუშაობს, ხედავ? მაგარია, არა? 38 00:03:26,720 --> 00:03:31,907 ესეიგი, ახლა შეგვიძლია დავწეროთ winstonAdult.draw() 39 00:03:31,907 --> 00:03:38,271 წვდომა გვაქვს winstonAdult-ის თვისებებზე, რადგან ფუნქცია ამ ობიექტზეა გამოძახებული. 40 00:03:38,271 --> 00:03:45,752 ეს არის "this"-ის ძალიან კარგი თვისება, მიუხედავად იმისა ,რომ ზოგჯერ დამაბნეველია. 41 00:03:45,752 --> 00:03:52,028 კარგი, გავერთეთ. ახლა კიდევ ერთი მეთოდი დავუმატოთ. კიდევ რა გააკეთოს ვინსტონმა? 42 00:03:52,028 --> 00:04:01,078 მოდი, ვალაპარაკოთ. Winston.prototype.talk რომ შეგვეძლოს ბევრი ფუნქციის მიკავშირება. 43 00:04:01,078 --> 00:04:05,241 ვათქმევინოთ "მე ვარ ვინსტონი!" 44 00:04:05,241 --> 00:04:13,181 შემდეგ დავწერთ this.x+20 და this.y + 150. 45 00:04:13,181 --> 00:04:19,734 არაფერი მომხდარა, მაგრამ ეს იმიტომ, რომ ჯერ ეს ფუნქცია არ გამომიძახებია. 46 00:04:19,734 --> 00:04:25,068 ახლა teen ვალაპარაკოთ, winstonTeen.talk() 47 00:04:25,068 --> 00:04:30,479 მე ვარ ვინსტონი, ესეც ასე! და winstonAdult.talk() 48 00:04:30,479 --> 00:04:36,828 კარგი, ახლა გვაქვს ვინსტონის ობიექტის ტიპი რომელსაც აქვს თვისებები: მეტსახელი, 49 00:04:36,828 --> 00:04:41,406 ასაკი, x, y; ასევე, ფუნქციონალურობა: ქცევა, მეთოდები; 50 00:04:41,406 --> 00:04:45,026 რომლებიც თვისებების მიხედვით განსხვავდება. 51 00:04:45,026 --> 00:04:48,359 და შეგვიძლია გამოვიყენოთ winston-ის იმდენი შემთხვევა, რამდენიც გვინდა 52 00:04:48,359 --> 00:04:50,999 და მათზე გამოვიძახოთ ეს ნებისმიერი მეთოდი. 53 00:04:50,999 --> 00:04:53,460 მაგარია, არა?