Middle
Šta su prototipi u JavaScript-u?
sobes.tech АИ
Одговор од АИ
U JavaScript-u, objekti mogu naslediti svojstva i metode od drugih objekata putem mehanizma prototipa. Svaki objekat u JavaScript-u ima internu skriveni atribut [[Prototype]], koji ukazuje na drugi objekat, njegov prototip. Kada se pristupa svojstvu ili metodi objekta, JavaScript motor najpre traži u samom objektu. Ako ga ne pronađe, proverava atribut [[Prototype]] i traži u prototipu. Ovaj proces se ponavlja duž lanca prototipa dok se svojstvo ne pronađe ili dok se ne dostigne null (kraj lanca).
Glavni koncepti:
- Lanac prototipa: Sekvenca objekata povezanih putem atributa
[[Prototype]]. - Nasleđivanje: Objekti nasleđuju svojstva i metode svojih prototipa.
__proto__: Istorijski korišćena (iako ne standardizovana) svojstvo za pristup[[Prototype]]. Danas se preporučuje korišćenjeObject.getPrototypeOf().prototype: Svojstvo konstruktora na koje[[Prototype]]ukazuje u instancama kreiranim pomoću tog konstruktora.
Primer sa konstruktorom i prototipom:
// Konstruktor
function Person(name, age) {
this.name = name;
this.age = age;
}
// Dodavanje metode u prototip
Person.prototype.sayHello = function() {
console.log("Zdravo, moje ime je " + this.name);
};
// Kreiranje instance
const person1 = new Person("Alice", 30);
// Pozivanje metode iz prototipa
person1.sayHello(); // Izlaz: Zdravo, moje ime je Alice
// Pristup prototipu instance
console.log(Object.getPrototypeOf(person1) === Person.prototype); // Izlaz: true
U ovom primeru:
Personje konstruktor funkcija.Person.prototypeje objekat koji služi kao prototip za sve instance kreirane pomoćunew Person().sayHelloje metoda dodata u prototip. Sve instancePersonnasleđuju ovu metodu.- Kada pozovemo
person1.sayHello(), JavaScript motor tražisayHellouperson1. Ako je ne pronađe, preusmerava na[[Prototype]]person1(koji je jednakPerson.prototype) i tamo nalazi metodu.
Prototipi omogućavaju efikasno korišćenje memorije, jer se metode i zajedničke osobine čuvaju u prototipu, a ne dupliraju u svakoj instanci objekta.