Sobes.tech
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šćenje Object.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:

  • Person je konstruktor funkcija.
  • Person.prototype je objekat koji služi kao prototip za sve instance kreirane pomoću new Person().
  • sayHello je metoda dodata u prototip. Sve instance Person nasleđuju ovu metodu.
  • Kada pozovemo person1.sayHello(), JavaScript motor traži sayHello u person1. Ako je ne pronađe, preusmerava na [[Prototype]] person1 (koji je jednak Person.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.