Öncelikle, bunun noktası fonksiyon tanımlandığında belirlenemez, ancak fonksiyon yürütüldüğünde bunun kime işaret ettiği belirlenebilir, aslında bunun son noktası onu çağıran nesnedir (bu cümlede bazı sorunlar var ve neden bir sorun olduğu daha sonra açıklanacaktır, her ne kadar internetteki çoğu makale bunu söylüyor, ancak çoğu durumda bu anlayışla ilgili sorun olmaz, ancak aslında bu anlayış yanlıştır, Bunu anladığınızda, bir anlaşılmazlık hissi yaşayacaksınız), bu yüzden bu konuyu derinlemesine inceleyeceğim.
Test şöyledir:
Bu, fonksiyonların farklı amaçları için farklı değerlere sahiptir. Genel olarak, fonksiyonun çalıştığı ortam nesnesi budur. Bunun kullanımı dört durumda ayrıntılı olarak tartışılır.
Durum 1: Saf fonksiyon çağrıları
Bu, bir fonksiyonun en yaygın kullanımıdır ve küresel bir çağrıdır, yani küresel bir nesneyi temsil eder. Aşağıdaki koda bakın, 1 sonucu ile çalışıyor.
Durum 2: Nesne olarak çağırma yöntemi
Fonksiyon ayrıca bir nesnenin yöntemi olarak da çağrılabilir; bu durumda bu, ana nesneye atıfta bulunur.
Vaka 3 Yapımcı olarak Çağrı
Sözde yapıcı olarak adlandırılan şey, bu fonksiyon aracılığıyla yeni bir nesne oluşturulabilir. Bu noktada, bu yeni nesneye atıfta bulunuyor.
Çalışmanın sonucu 1. Şu anda bunun küresel bir nesne olmadığını göstermek için kodda bazı değişiklikler yapıyoruz:
Çalışmanın sonucu 2'dir, bu da küresel değişken x'in değerinin hiç değişmediğini gösterir.
Vaka 4 başvuru çağrısı
apply(), fonksiyonun çağıran nesnesini değiştiren bir fonksiyonun bir yöntemidir. İlk parametresi, fonksiyonu çağıran değişen nesneyi temsil eder. Bu nedenle, bu ilk parametreye atıfta bulunur.
apply() parametresi boş olduğunda, küresel nesne varsayılan olarak çağrılır. Dolayısıyla, koşunun sonucu 0'dır ve bu da bunun küresel nesneye atıfta bulunduğunu kanıtlar.
Kodun son satırını şu şekilde değiştirirseniz
Çalışan sonuç 1 olur ve bunun obj'yi temsil ettiğini kanıtlar.
(Son)
Referans:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
|