Ի՞նչ են 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) և գտնում է մեթոդը:
Պրոտոտիպները ապահովում են արդյունավետ հիշողության օգտագործում, քանի որ մեթոդներն ու ընդհանուր հատկությունները պահվում են պրոտոտիպում, ոչ թե կրկնվում յուրաքանչյուր օբյեկտի օրինակում: