Sobes.tech
Junior

'this' açar sözü nədir?

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də this açar sözüdür və cari kodun icra olunduğu kontekstdə obyektə istinad edir. Onun dəyəri funksiyanın necə çağırılmasından asılıdır.

this-in təyin olunmasının əsas yolları:

  • Qlobal kontekst: Funksiya xaricində, this qlobal obyektə (window brauzerdə, global Node.js-də) istinad edir.
  • Normal funksiya çağırışı: strict mode-da (sərt rejim), this də qlobal obyektə istinad edir (və ya undefined, əgər funksiya obyektin metodu kimi çağırılırsa və bu obyekt null və ya undefined-dir). Sərt rejimdə, this undefined-ə bərabərdir.
  • Obyekt metodu: Əgər funksiya obyektin metodu kimi çağırılırsa (yəni, nöqtə operatoru . vasitəsilə), this metodu sahibi olan obyektə istinad edir.
  • Konstruktor: new operatoru istifadə olunanda, this yeni yaradılan obyekt nümunəsinə istinad edir.
  • call(), apply(), bind() metodları: Bu metodlar funksiyanı çağırarkən this-in dəyərini açıq şəkildə təyin etməyə imkan verir. bind() yeni funksiya qaytarır və this-i bağlayır, call()apply() isə funksiyanı göstərilən this ilə çağırır.
  • Ox funksiyaları: Ox funksiyaları öz this-ə malik deyil. this ox funksiyasında leksik olaraq onun tərif olunduğu ətraf mühitdən miras qalır.

Misallar:

// Qlobal kontekst
console.log(this === window); // true (brauzer üçün)

// Normal funksiya çağırışı
function myFunction() {
  console.log(this);
}
myFunction(); // window (sərt rejimdə deyil)

// Obyekt metodu
const myObject = {
  myMethod: function() {
    console.log(this);
  }
};
myObject.myMethod(); // myObject

// Konstruktor
function MyConstructor() {
  this.value = 10;
  console.log(this);
}
const instance = new MyConstructor(); // nümunə obyekti

// call(), apply(), bind()
function greet(name) {
  console.log("Salam, " + name + "! Mənim adım " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Salam, Bob! Mənim adım Alice
greet.apply(person, ["Bob"]); // Salam, Bob! Mənim adım Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Salam, Bob! Mənim adım Alice

// Ox funksiyası
const arrowFunction = () => {
  console.log(this);
};
arrowFunction(); // window (əgər qlobal kontekstdə təyin olunubsa)

this-in müxtəlif kontekstlərdə necə müəyyən olunduğunu başa düşmək düzgün JavaScript kodu yazmaq üçün çox vacibdir.