Sobes.tech
Middle

JavaScript-də obyektin kontekstini necə dəyişmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də obyektin kontekstini (this) dəyişdirmək üçün əsasən bir neçə üsul mövcuddur:

  1. call(): Bir funksiyanı müəyyən bir kontekst və arqumentlərlə, ayrı-ayrılıqda ötürülməklə icra edir.

    // call() ilə nümunə
    const obj = { value: 42 };
    function showValue() {
        console.log(this.value);
    }
    showValue.call(obj); // 42 göstərəcək
    
  2. apply(): Bir funksiyanı müəyyən bir kontekst və arqumentləri massiv və ya pseudo-massiv şəklində ötürməklə icra edir.

    // apply() ilə nümunə
    const obj = { value: 100 };
    function add(a, b) {
        console.log(this.value + a + b);
    }
    add.apply(obj, [5, 10]); // 115 göstərəcək
    
  3. bind(): Belirli bir obyektə bağlanmış yeni bir funksiya qaytarır. Orijinal funksiya dərhal icra edilmir.

    // bind() ilə nümunə
    const obj = { value: 200 };
    function greet() {
        console.log("Salam " + this.value);
    }
    const boundGreet = greet.bind(obj);
    boundGreet(); // "Salam 200" göstərəcək
    
  4. Ox funksiyaları (=>): Öz this kontekstinə malik deyil. Onlar təyin olunduqları leksikal mühitdən miras alırlar.

    // ox funksiyası ilə nümunə
    const obj = {
      value: "obyekt",
      printValue: function() {
        const arrowFunc = () => {
          console.log("Ox funksiyasından: " + this.value); // this, obj-ə istinad edir
        }
        arrowFunc();
      }
    };
    obj.printValue(); // "Ox funksiyasından: obyekt" göstərəcək
    
  5. Obyektin metod kimi çağırılması: Bir funksiya obyektin metodu kimi çağırıldıqda (obj.method()), this konteksti obyektə (obj) çevrilir.

    // metod kimi çağırış nümunəsi
    const obj = {
        value: "obyekt metodu",
        show: function() {
            console.log(this.value);
        }
    };
    obj.show(); // "obyekt metodu" göstərəcək
    
  6. Açıq şəkildə kontekstin ötürülməsi new ilə: new operatoru ilə yeni obyekt nümunəsi yaradıldıqda, konstruktor daxilində this yaradılan nümunəyə istinad edir.

    // konstruktor nümunəsi
    function MyObject(value) {
        this.value = value; // this, yeni nümunəyə istinad edir
    }
    const instance = new MyObject("konstruktor");
    console.log(instance.value); // "konstruktor" göstərəcək
    

Bu üsullar funksiyanın içində this-in nəyi göstərdiyini idarə etməyə imkan verir və JavaScript-də obyektlər və metodlarla düzgün işləmək üçün çox vacibdir.