Ce sunt prototipurile în JavaScript?
sobes.tech AI
Răspuns de la AI
În JavaScript, obiectele pot moșteni proprietăți și metode de la alte obiecte prin mecanismul de prototipuri. Fiecare obiect în JavaScript are o proprietate internă ascunsă [[Prototype]], care indică către un alt obiect, prototipul său. Când se accesează o proprietate sau metodă a unui obiect, motorul JavaScript o caută mai întâi în obiectul însuși. Dacă nu o găsește, se uită la proprietatea [[Prototype]] și caută în prototip. Acest proces se repetă pe lanțul de prototipuri până când proprietatea este găsită sau până când se ajunge la null (sfârșitul lanțului).
Concepte principale:
- Lanț de prototipuri: Secvență de obiecte legate prin proprietatea
[[Prototype]]. - Moștenire: Obiectele moștenesc proprietățile și metodele prototipurilor lor.
__proto__: Proprietate utilizată istoric (deși nu standardizată inițial) pentru accesul la[[Prototype]]. În prezent, se recomandă utilizareaObject.getPrototypeOf().prototype: Proprietate a constructorului la care face referire[[Prototype]]în instanțele create cu acel constructor.
Exemplu cu constructor și prototip:
// Constructor
function Person(name, age) {
this.name = name;
this.age = age;
}
// Adăugarea metodei în prototip
Person.prototype.sayHello = function() {
console.log("Salut, numele meu este " + this.name);
};
// Crearea unei instanțe
const person1 = new Person("Alice", 30);
// Apelarea metodei din prototip
person1.sayHello(); // Output: Salut, numele meu este Alice
// Accesarea prototipului instanței
console.log(Object.getPrototypeOf(person1) === Person.prototype); // Output: true
În acest exemplu:
Personeste o funcție constructor.Person.prototypeeste obiectul care servește drept prototip pentru toate instanțele create cunew Person().sayHelloeste o metodă adăugată în prototip. Toate instanțelePersonmoștenesc această metodă.- Când se apelează
person1.sayHello(), motorul JavaScript cautăsayHelloînperson1. Dacă nu o găsește, se uită la[[Prototype]]al luiperson1(care este egal cuPerson.prototype) și găsește metoda acolo.
Prototipurile permit o utilizare eficientă a memoriei, deoarece metodele și proprietățile comune sunt stocate în prototip, nu fiind duplicate în fiecare instanță de obiect.