რა არის პროტოტიპები JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
JavaScript ობიექტები შეიძლება მემკვიდრეობით მიიღონ თვისებები და მეთოდები სხვა ობიექტებიდან პროტოტიპების მექანიზმის საშუალებით. JavaScript-ის თითოეულ ობიექტს აქვს შიდა დამალული თვისება [[Prototype]], რომელიც მიუთითებს სხვა ობიექტზე, რომელიც მისი პროტოტიპია. როდესაც ხდება ობიექტის თვისების ან მეთოდის მიმართვა, JavaScript-ის ძრავა პირველ რიგში ეძებს მას თავად ობიექტში. თუ ვერ პოულობს, მიმართავს [[Prototype]] თვისებას და ეძებს პროტოტიპში. ეს პროცესი განმეორებით ხდება პროტოტიპების ჯაჭვში, სანამ თვისება არ მოიძებნება ან არ მიაღწევს null-ს (ჯაჭვის ბოლო).
ძირითადი კონცეფციები:
- პროტოტიპის ჯაჭვი: ობიექტების სერია, რომლებიც დაკავშირებულია
[[Prototype]]თვისების საშუალებით. - მემკვიდრეობა: ობიექტები მემკვიდრეობით იღებენ თავიანთი პროტოტიპების თვისებებს და მეთოდებს.
__proto__: ისტორიულად გამოყენებული (თუმცა არა სტანდარტული თავდაპირველად) თვისება[[Prototype]]-ზე წვდომისთვის. ახლა სასურველია გამოიყენოსObject.getPrototypeOf().prototype: კონსტრუქტორის თვისება, რომელსაც მიუთითებს[[Prototype]]-ზე, შექმნილი ობიექტებისთვის, რომლებიც ამ კონსტრუქტორით არის შექმნილი.
პროტოტიპთან დაკავშირებული მაგალითი:
// კონსტრუქტორი
function Person(name, age) {
this.name = name;
this.age = age;
}
// მეთოდის დამატება პროტოტიპზე
Person.prototype.sayHello = function() {
console.log("გამარჯობა, ჩემი სახელია " + this.name);
};
// მაგალითის შექმნა
const person1 = new Person("Alice", 30);
// პროტოტიპიდან მეთოდის გამოძახება
person1.sayHello(); // შედეგი: გამარჯობა, ჩემი სახელია Alice
// მაგალითის პროტოტიპზე წვდომა
console.log(Object.getPrototypeOf(person1) === Person.prototype); // შედეგი: true
ამ მაგალითში:
Personარის კონსტრუქტორული ფუნქცია.Person.prototypeარის ობიექტი, რომელიც წარმოადგენს ყველაnew Person()-ით შექმნილი მაგალითის პროტოტიპს.sayHelloარის მეთოდი, რომელიც დამატებულია პროტოტიპზე. ყველაPerson-ის მაგალითი მემკვიდრეობით იღებს ამ მეთოდს.- როდესაც იძახება
person1.sayHello(), JavaScript-ის ძრავა ეძებსsayHello-სperson1-ში. თუ ვერ პოულობს, მიმართავს[[Prototype]]-სperson1-ის (რომელიც თანაბარიაPerson.prototype) და იქ პოულობს მეთოდს.
პროტოტიპები უზრუნველყოფს მეხსიერების ეფექტიან გამოყენებას, რადგან მეთოდები და საერთო თვისებები ინახება პროტოტიპში, არ დუბლირდება თითოეულ ობიექტის მაგალითში.