CodeGym /Kurslar /Frontend SELF AZ /Prototiplərlə tanışlıq

Prototiplərlə tanışlıq

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

3.1 Prototiplərin konsepsiyası

Prototiplər JavaScript-də əsas konsepsiyalardan biridir və obyektlərə digər obyektlərin xüsusiyyətlərini və metodlarını miras almağa imkan verir. Bir çox digər proqramlaşdırma dillərindən fərqli olaraq, burada miras siniflər vasitəsilə deyil, prototiplər əsasında həyata keçirilir. İndi isə prototiplərin nə olduğu, necə işlədiyi və necə istifadə edilə biləcəyini araşdıracağıq.

JavaScript-də Prototip — digər obyektlərin xüsusiyyətləri və metodlarını miras ala biləcəyi obyektdir. JavaScript-də hər bir obyektin [[Prototype]] adlı gizli bir xüsusiyyəti var, bu isə onun prototipinə işarə edir.

Bu prototipin də öz prototipləri ola bilər, bu isə prototiplər zənciri (prototype chain) yaradır. Obyektin xüsusiyyətləri və metodları bu zəncir vasitəsilə miras alına bilər. Bu, obyektlərin funksionallığı paylaşmasına və obyekt iyerarxiyaları yaratmasına imkan verir.

Proto xüsusiyyəti

JavaScript-də hər bir obyektin __proto__ adlı bir xüsusiyyəti var və bu, onun prototipinə işarə edir. Əgər bir xüsusiyyət və ya metod yaranan obyektdə tapılmırsa, bu xüsusiyyət vasitəsilə axtarış davam edir.

Bu nümunədə child obyekti parent obyektindən greet() metodunu miras alır:

JavaScript
    
      const parent = {
        greet() {
          console.log('Parent-dən salamlar');
        }
      };

      const child = {
        __proto__: parent
      };

      child.greet(); // Çap edəcək: Parent-dən salamlar
    
  

3.2 Prototiplərin yaradılması və istifadəsi

1. Object.create()

Object.create() metodu müəyyən edilmiş prototiplə yeni obyekt yaratmağa imkan verir.

Nümunə:

JavaScript
    
      const parent = {
        greet() {
          console.log('Salam parent-dən');
        }
      };

      const child = Object.create(parent);
      child.greet(); // Ekrana çıxacaq: Salam parent-dən
    
  

2. Prototipə xassələr və metodlar əlavə etmək

Xassələr və metodlar prototipə əlavə edilə bilər ki, onu miras alan bütün obyektlər üçün əlçatan olsun.

Bu nümunədə speak() metodu animal prototipinə əlavə edilir və dog obyektinə əlçatandır:

JavaScript
    
      const animal = {
        speak() {
          console.log(`${this.name} səs çıxarır.`);
        }
      };

      const dog = Object.create(animal);
      dog.name = 'Buddy';
      dog.speak(); // Ekrana çıxacaq: Buddy səs çıxarır.
    
  

3. Obyektin prototipini dəyişmək

Obyektin prototipini Object.setPrototypeOf() metodu ilə dəyişmək olar.

Bu nümunədə duck obyektinin prototipi animal-dan bird-ə dəyişdirilir:

JavaScript
    
      const animal = {
        speak() {
          console.log('Heyvan danışır');
        }
      };

      const bird = {
        fly() {
          console.log('Quş uçur');
        }
      };

      const duck = {
        __proto__: animal,
        quack() {
          console.log('Ördək qaqqıldayır');
        }
      };

      Object.setPrototypeOf(duck, bird);
      duck.fly();   // Ekrana çıxacaq: Quş uçur
      duck.quack(); // Ekrana çıxacaq: Ördək qaqqıldayır
    
  

3.3 Prototiplərlə iş

1. Obyektin prototipini yoxlamaq

Object.getPrototypeOf() metodu obyektin prototipini əldə etməyə imkan verir.

Nümunə:

JavaScript
    
      const parent = {
        greet() {
          console.log('Salam parent-dən');
        }
      };

      const child = Object.create(parent);

      console.log(Object.getPrototypeOf(child) === parent); // Ekrana çıxacaq: true
    
  

2. Obyektin prototipə aid olmasını yoxlamaq

instanceof operatoru obyektin müəyyən konstruktorun və ya prototipin nümunəsi olub-olmadığını yoxlamaq üçün istifadə olunur.

Nümunə:

JavaScript
    
      function Person(name) {
        this.name = name;
      }

      const john = new Person('John');

      console.log(john instanceof Person); // Ekrana çıxacaq: true
    
  

3. Obyekt və onun prototipinin xüsusiyyətlərini nəzərdən keçirmək

Obyekt və onun prototipinin xüsusiyyətlərini nəzərdən keçirmək üçün for...in dövrü istifadə olunur, bu isə bütün sadalanan xüsusiyyətləri göstərir.

Nümunə:

JavaScript
    
      const parent = {
        greet() {
          console.log('Salam parent-dən');
        }
      };

      const child = Object.create(parent);
      child.name = 'Child';

      for (let key in child) {
        console.log(key);
      }

      // Ekrana çıxacaq:
      // name
      // greet
    
  

Yalnız obyektin öz xüsusiyyətlərini nəzərdən keçirmək üçün Object.keys() metodu və ya for...of dövrü ilə Object.entries() metodu istifadə olunur.

Nümunə:

JavaScript
    
      const parent = {
        greet() {
          console.log('Salam parent-dən');
        }
      };

      const child = Object.create(parent);
      child.name = 'Child';

      console.log(Object.keys(child)); // Ekrana çıxacaq: ['name']

      for (const [key, value] of Object.entries(child)) {
        console.log(key, value);
      }

      // Ekrana çıxacaq:
      // name Child
    
  
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION