Sobes.tech
Middle

JavaScriptda ob'ektning kontekstini qanday o'zgartirish mumkin?

sobes.tech AI

AIdan javob

JavaScript-da obyekting kontekstini (this) o'zgartirishning bir nechta asosiy usullari mavjud:

  1. call(): Funksiyani belgilangan kontekst va argumentlar bilan, alohida-alohida uzatib bajaradi.

    // call() bilan misol
    const obj = { value: 42 };
    function showValue() {
        console.log(this.value);
    }
    showValue.call(obj); // 42 ni chiqaradi
    
  2. apply(): Funksiyani belgilangan kontekst va argumentlarni massiv yoki pseudo-massiv shaklida uzatib bajaradi.

    // apply() bilan misol
    const obj = { value: 100 };
    function add(a, b) {
        console.log(this.value + a + b);
    }
    add.apply(obj, [5, 10]); // 115 ni chiqaradi
    
  3. bind(): Belgilangan ob'ektga bog'langan yangi funksiyani qaytaradi. Asl funksiyani darhol chaqirmaydi.

    // bind() bilan misol
    const obj = { value: 200 };
    function greet() {
        console.log("Salom " + this.value);
    }
    const boundGreet = greet.bind(obj);
    boundGreet(); // "Salom 200" ni chiqaradi
    
  4. Arrow funksiyalar (=>): O'zining this kontekstiga ega emas. Ular aniqlangan lingvistik muhitdan meros oladi.

    // arrow funksiyasi bilan misol
    const obj = {
      value: "obyekt",
      printValue: function() {
        const arrowFunc = () => {
          console.log("Arrow funksiyadan: " + this.value); // this, obj'ga ishora qiladi
        }
        arrowFunc();
      }
    };
    obj.printValue(); // "Arrow funksiyadan: obyekt" ni chiqaradi
    
  5. Obyekt metod sifatida chaqirish: Funksiya obyekt metod sifatida chaqirilganda (obj.method()), this konteksti obyektga (obj) bo'ladi.

    // metod sifatida chaqirish misoli
    const obj = {
        value: "obyekt metodi",
        show: function() {
            console.log(this.value);
        }
    };
    obj.show(); // "obyekt metodi" ni chiqaradi
    
  6. Konstruktordan (new) kontekstni aniq uzatish: new operatori yordamida yangi ob'ekt nusxasi yaratilganda, konstruktor ichidagi this konteksti yaratilayotgan nusxaga ishora qiladi.

    // konstruktor bilan misol
    function MyObject(value) {
        this.value = value; // this, yangi nusxaga ishora qiladi
    }
    const instance = new MyObject("konstruktor");
    console.log(instance.value); // "konstruktor" ni chiqaradi
    

Ushbu usullar funksiyada this kalit so'zining nima ga ishora qilayotganini boshqarish imkonini beradi, bu JavaScript-da ob'ektlar va metodlar bilan to'g'ri ishlash uchun juda muhimdir.