JavaScript-də irsiyyətin necə işlədiyini izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də irsiyyət prototiplər əsasında qurulub. Hər bir obyektin daxili xüsusiyyəti [[Prototype]] (bu __proto__ və ya Object.getPrototypeOf() vasitəsilə əldə edilə bilər) mövcuddur və başqa bir obyektə işarə edir.
Obyektin xüsusiyyəti və ya metoduna daxil olmağa çalışarkən, əgər obyektin daxilində tapılmırsa, JavaScript onu [[Prototype]]-də axtarır, sonra prototipin [[Prototype]]-ində və beləliklə prototip zəncirində yuxarı doğru davam edir, sona çatana qədər (Object.prototype), onun [[Prototype]] isə null-dur.
Bu, prototip əsaslı irsiyyətdir.
ECMAScript 2015 (ES6) sinifləri prototip irsiyyətinin sintaktik şəkəridir. Onlar prototiplərlə işləmək və obyekt hiyerarşiləri yaratmaq üçün daha tanış sintaksis təmin edir.
ES6-dan əvvəl prototip irsiyyətinin istifadəsinə nümunə:
// Valideyn konstruktoru
function Animal(name) {
this.name = name;
}
// Valideynin prototipində metod
Animal.prototype.sayHi = function() {
console.log(`Salam, mən ${this.name}`);
};
// Uşaq konstruktoru
function Dog(name, breed) {
// Valideyn konstruktorunu çağır
Animal.call(this, name);
this.breed = breed;
}
// Uşaq prototipini valideynin prototipinə qur
// Dog konstruktorunun referansını saxla
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
// Uşağa metod əlavə et
Dog.prototype.bark = function() {
console.log("Hav-hav!");
};
// Uşaq nümunəsi yaradın
const myDog = new Dog("Boby", "Labrador");
// Valideyn və uşaq metodlarından istifadə
myDog.sayHi(); // Çıxış: Salam, mən Boby
myDog.bark(); // Çıxış: Hav-hav!
ES6 siniflərindən istifadə nümunəsi:
// Valideyn sinfi
class Animal {
constructor(name) {
this.name = name;
}
sayHi() {
console.log(`Salam, mən ${this.name}`);
}
}
// Animal-dən irsi alan uşaq sinfi
class Dog extends Animal {
constructor(name, breed) {
// Valideynin konstruktorunu çağır
super(name);
this.breed = breed;
}
bark() {
console.log("Hav-hav!");
}
}
// Uşaq sinfinin nümunəsini yaradın
const myDog = new Dog("Rex", "Alman çoban iti");
// Valideyn və uşaq metodlarından istifadə
myDog.sayHi(); // Çıxış: Salam, mən Rex
myDog.bark(); // Çıxış: Hav-hav!
JavaScript-də irsiyyətin əsas nöqtələri:
- Prototiplər: Hər obyektin prototipi var.
- Prototip zənciri: Xüsusiyyət və ya metod axtarışı yuxarıya doğru prototiplər boyunca davam edir.
[[Prototype]]: Prototipə işarə edən daxili xüsusiyyət.__proto__:[[Prototype]]-ə giriş üçün köhnə, amma geniş istifadə olunan üsul.Object.getPrototypeOf():[[Prototype]]-ə giriş üçün tövsiyə olunan üsul.- Konstruktorlar və
prototype: ES6-dan əvvəl obyektlər yaratmaq və onların prototiplərini təyin etmək üçün istifadə olunurdu. - Siniflər (ES6):
class,extends,superaçar sözləri ilə prototip irsiyyətinin sintaktik şəkəridir.