Sobes.tech
Middle

Как работи системата за прототипи в JavaScript?

sobes.tech AI

Отговор от AI

В JavaScript системата за прототипи е механизъм за наследяване, при който обектите могат да наследяват свойства и методи от други обекти.

Всеки обект има вътрешно свойство [[Prototype]] (достъпно чрез __proto__ или Object.getPrototypeOf), което сочи към друг обект — прототип. Ако при достъп до свойство на обекта то не бъде намерено, търсенето продължава в прототипа, след това в прототипа на прототипа и така нататък, докато не се достигне null.

Това позволява създаването на вериги от прототипи и реализирането на наследяване без класове (макар че в съвременните версии на JS има синтаксис за класове, който използва прототипи под капака).

Пример:

const животно = {
  speak() {
    console.log('Животното говори');
  }
};

const куче = Object.create(животно);
куче.bark = function() {
  console.log('Га!');
};

куче.bark();    // Га!
куче.speak();   // Животното говори (наследено от животно)

По този начин прототипите позволяват на обектите да споделят поведение и свойства, което е основата на обектно-ориентираното програмиране в JavaScript.