JavaScript this Anahtarı

Örnek

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

Kişisel olarak deneyin

this nedir?

JavaScript this Anahtar kelime, ona ait nesneyi belirtir.

Değeri, kullanım konumuna bağlı olarak farklı olabilir:

  • Yöntemde,this Bu, sahibi nesneyi belirtir.
  • Tek başına durumunda,this küresel nesneyi belirtir.
  • Fonksiyon içinde,this küresel nesneyi belirtir.
  • Fonksiyon içinde, katı modda,this tanımlanmamıştır.
  • Olayda,this Bu, olayı alan elementi belirtir.

Benzer call() ve apply() Bu tür yöntemler this'i herhangi bir nesneye referans verebilir.

Yöntemdeki this

Nesne yöntemlerinde,this Bu yöntemin "sahibi"ni belirtir.

Bu sayfanın en üstündeki örnekte,this Bu, person nesnesini belirtir.

person nesnesi fullName yönteminin sahibidir.

fullName : function() {
  return this.firstName + " " + this.lastName;
}

Kişisel olarak deneyin

Tek başına this

Tek başına kullanıldığında, sahibi küresel nesnedir, bu yüzden this küresel nesneyi belirtir.

Tarayıcı penceresinde, küresel nesne, [object Window]

Örnek

var x = this;

Kişisel olarak deneyin

Katı modda, tek başına kullanıldığında, this küresel nesneyi belirtir [object Window]

Örnek

"use strict";
var x = this;

Kişisel olarak deneyin

Fonksiyon içinde this(varsayılan)

JavaScript fonksiyonunda, fonksiyonun sahibi varsayılan olarak bağlanır this

Bu yüzden, fonksiyon içinde,this küresel nesneyi belirtir [object Window]

Örnek

function myFunction() {
  return this;
}

Kişisel olarak deneyin

Fonksiyon içinde this(katı mod)

JavaScript katı modu varsayılan bağlamı izin vermez.

Bu yüzden, fonksiyon içinde kullanılırken, katı modda,this tanımlanmamıştır (undefined)。

Örnek

"use strict";
function myFunction() {
  return this;
}

Kişisel olarak deneyin

Olay işleyicisindeki this

HTML olay işleyicilerinde,this Bu, bu olayı alan HTML elementidir:

Örnek

<button onclick="this.style.display='none'">
  Bana tıklayarak sil!
</button>

Kişisel olarak deneyin

Nesne yöntemi bağlama

Bu örnekte,this Bu person nesnesi (person nesnesi bu fonksiyonun "sahibi"dir):

Örnek

var person = {
  firstName  : "Bill",
  lastName   : "Gates",
  id         : 678,
  myFunction : function() {
    return this;
  }
};

Kişisel olarak deneyin

Örnek

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

Kişisel olarak deneyin

Yanithis.firstName anlamına gelir thiskendi firstName Özellikleri.

Açık fonksiyon bağlama

call() ve apply() Önceden tanımlanmış JavaScript yöntemleri.

Biri diğeri olarak parametre olarak bir nesne yöntemi çağırmak için kullanılabilirler.

Bu eğitimin sonunda ilgili konular hakkında okuyabilirsiniz. call() ve apply() daha fazla bilgi için.

person2'ı person1.fullName olarak parametre olarak kullanarak çağrıldığında aşağıdaki örnekte,this person2'ı person1'in yöntemi olarak kullanacak:

Örnek

var person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person2 = {
  firstName:"Bill",
  lastName: "Gates",
}
person1.fullName.call(person2);  // "Bill Gates" döndürecektir"

Kişisel olarak deneyin