Sobes.tech
Junior

JavaScript-də klassik funksiya ilə ox funksiyası arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas fərq onların this ilə işləmə tərzindədir.

Klassik funksiya öz this-ə malikdir və bu, çağırılma kontekstindən asılıdır (nə zaman çağırılıb).

Ok funksiyası isə öz this-ə malik deyil. O, leksik olaraq, this mühitindən irsən alır.

Digər fərqlər:

  • arguments obyekti: Klassik funksiyalar arguments-ə çıxışa malikdir, ok funksiyalar isə — yox (amma rest parametrlərdən istifadə etmək olar).
  • Konstruktorlar: Klassik funksiyalar new operatoru ilə konstruktor kimi istifadə oluna bilər. Ok funksiyaları — yox.
  • prototype xüsusiyyəti: Klassik funksiyaların prototype xüsusiyyəti var. Ok funksiyalarında — yox.

this ilə işləmə nümunəsi:

// Klassik funksiya nümunəsi
const obj = {
  name: 'Obyekt',
  greet: function() {
    console.log(this.name); // this, obj-ə istinad edir
  }
};

obj.greet(); // Çıxış: Obyekt

const greetFunc = obj.greet;
greetFunc(); // Çıxış: undefined (və ya Browserdə Window) - this, konteksti itirir
// Ok funksiyası nümunəsi
const objArrow = {
  name: 'Ok ilə obyekt',
  greet: () => {
    console.log(this.name); // this, xarici kontekstdən irsən alır (bu halda qlobal və ya Window)
  }
};

objArrow.greet(); // Çıxış: undefined (və ya brauzer pəncərəsinin adı, əgər name qlobal olaraq təyin olunubsa)

const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Çıxış: undefined (və ya brauzer pəncərəsinin adı) - this dəyişmir