Sobes.tech
Middle

JavaScript'te bir nesnenin bağlamı nasıl değiştirilebilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te nesnenin bağlamını (this) değiştirmek için birkaç temel yöntem vardır:

  1. call(): Bir fonksiyonu belirli bir bağlam ve argümanlarla, argümanlar ayrı ayrı geçirilerek çalıştırır.

    // call() ile örnek
    const obj = { value: 42 };
    function showValue() {
        console.log(this.value);
    }
    showValue.call(obj); // 42 yazdırır
    
  2. apply(): Bir fonksiyonu belirli bir bağlam ve argümanları dizi veya pseudo-dizi olarak geçirerek çalıştırır.

    // apply() ile örnek
    const obj = { value: 100 };
    function add(a, b) {
        console.log(this.value + a + b);
    }
    add.apply(obj, [5, 10]); // 115 yazdırır
    
  3. bind(): Belirtilen bir nesneye bağlanmış yeni bir fonksiyon döndürür. Orijinal fonksiyon hemen çağrılmaz.

    // bind() ile örnek
    const obj = { value: 200 };
    function greet() {
        console.log("Merhaba from " + this.value);
    }
    const boundGreet = greet.bind(obj);
    boundGreet(); // "Merhaba from 200" yazdırır
    
  4. Ok fonksiyonları (=>): Kendi this bağlamlarına sahip değildirler. Tanımlandıkları ortamın bağlamını miras alırlar.

    // ok fonksiyonuyla örnek
    const obj = {
      value: "nesne",
      printValue: function() {
        const arrowFunc = () => {
          console.log("Ok fonksiyonundan: " + this.value); // this, obj'ye işaret eder
        }
        arrowFunc();
      }
    };
    obj.printValue(); // "Ok fonksiyonundan: nesne" yazdırır
    
  5. Nesne yöntemi olarak çağrı: Bir fonksiyon, nesne yöntemi olarak çağrıldığında (obj.method()), this bağlamı nesneye (obj) olur.

    // yöntem olarak çağrı örneği
    const obj = {
        value: "nesne yöntemi",
        show: function() {
            console.log(this.value);
        }
    };
    obj.show(); // "nesne yöntemi" yazdırır
    
  6. Yapıcı (new) kullanılarak bağlamın açıkça geçirilmesi: new operatörü kullanılarak yeni bir nesne örneği oluşturulduğunda, yapıcı içindeki this bağlamı oluşturulan örneğe işaret eder.

    // yapıcı ile örnek
    function MyObject(value) {
        this.value = value; // this, yeni örneğe işaret eder
    }
    const instance = new MyObject("yapıcı");
    console.log(instance.value); // "yapıcı" yazdırır
    

Bu yöntemler, fonksiyon içindeki this anahtar kelimesinin neye işaret ettiğini yönetmeye olanak tanır ve JavaScript'te nesneler ve metodlarla doğru çalışmak için kritiktir.