Sobes.tech
Middle

JavaScript-də prototiplər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də obyektlər digər obyektlərdən prototip mexanizmi vasitəsilə xüsusiyyətlər və metodlar irsi ala bilər. Hər bir JavaScript obyekti daxili gizli [[Prototype]] xüsusiyyətinə malikdir, hansı ki, onun prototipinə işarə edir. Obyektin xüsusiyyəti və ya metoduna müraciət edildikdə, JavaScript mühərriki əvvəlcə onu obyektin özündə axtarır. Əgər tapmazsa, [[Prototype]] xüsusiyyətinə baxır və prototipdə axtarır. Bu proses prototip zənciri boyunca təkrarlanır, xüsusiyyət tapılana və ya null-a çatana qədər (zəncirin sonu).

Əsas anlayışlar:

  • Prototip zənciri: [[Prototype]] xüsusiyyəti ilə əlaqələndirilmiş obyektlərin ardıcıllığı.
  • İrsiyyət: Obyektlər, prototiplərinin xüsusiyyətlərini və metodlarını irsi alır.
  • __proto__: Tarixi olaraq istifadə olunan (həm də standartlaşdırılmamış) [[Prototype]]-a giriş üçün xüsusiyyət. İndiki vaxtda Object.getPrototypeOf() istifadə etmək tövsiyə olunur.
  • prototype: Bu konstruktorun xüsusiyyəti, [[Prototype]]-a istinad edir və bu prototipdən yaradılan nümunələr tərəfindən istifadə olunur.

Konstruktor və prototip nümunəsi:

// Konstruktor
function Person(name, age) {
  this.name = name;
  this.age = age;
}

// Prototipə metod əlavə et
Person.prototype.sayHello = function() {
  console.log("Salam, mənim adım " + this.name);
};

// Nümunə yaradın
const person1 = new Person("Alice", 30);

// Prototip metodunu çağırın
person1.sayHello(); // Nəticə: Salam, mənim adım Alice

// Nümunənin prototipinə giriş
console.log(Object.getPrototypeOf(person1) === Person.prototype); // Nəticə: true

Bu nümunədə:

  • Person konstruktor funksiyasıdır.
  • Person.prototype bütün new Person() ilə yaradılan nümunələr üçün prototip kimi xidmət edən obyekt.
  • sayHello prototipə əlavə olunmuş metoddur. Bütün Person nümunələri bu metodu irsi alır.
  • person1.sayHello() çağırıldıqda, JavaScript mühərriki sayHello-yu person1-də axtarır. Əgər tapmazsa, [[Prototype]]-a (yəni Person.prototype) müraciət edir və metodu orada tapır.

Prototiplər yaddaşdan səmərəli istifadəni təmin edir, çünki ümumi metodlar və xüsusiyyətlər prototipdə saxlanılır və hər obyekt nümunəsində təkrarlanmır.