Sobes.tech
Middle+

რა ტიპის მემკვიდრეობა გამოიყენება JavaScript-ში? არსებობს თუ არა მრავალმემკვიდრეობა კლასებში?

sobes.tech AI

პასუხი AI-სგან

JavaScript-ში გამოიყენება პროტოტიპული მემკვიდრეობა, და ES6-ის გამოჩენასთან ერთად — ეს არის სინტაქსური შაქარი პროტოტიპებზე. JS-ის კლასები მხარს უჭერენ მარტივ მემკვიდრეობას, ანუ კლასი შეიძლება მემკვიდრეობა მხოლოდ ერთი მშობლისგან.

JavaScript-ის კლასებში მრავალმხრივი მემკვიდრეობა არ არსებობს, მაგრამ შეგიძლიათ გამოიყენოთ მიკსინები — ფუნქციები, რომლებიც კლასს მეთოდებს უყრის, რათა იმიტაცია მოახდინოს მრავალმხრივ მემკვიდრეობაზე.

საერთო მემკვიდრეობის მაგალითი:

class Animal {
  speak() {
    console.log('ცხოველის ხმაც');
  }
}

class Dog extends Animal {
  speak() {
    console.log('ჰაუ!');
  }
}

const dog = new Dog();
dog.speak(); // ჰაუ!

მიკსინის მაგალითი:

const CanFly = Base => class extends Base {
  fly() {
    console.log('ფრენა');
  }
};

class Bird {}
class Eagle extends CanFly(Bird) {}

const eagle = new Eagle();
eagle.fly(); // ფრენა