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:
-
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 -
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 -
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 -
Ok fonksiyonları (
=>): Kendithisbağ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 -
Nesne yöntemi olarak çağrı: Bir fonksiyon, nesne yöntemi olarak çağrıldığında (
obj.method()),thisbağ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 -
Yapıcı (
new) kullanılarak bağlamın açıkça geçirilmesi:newoperatörü kullanılarak yeni bir nesne örneği oluşturulduğunda, yapıcı içindekithisbağ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.