JavaScript'te Etkinleştirme nesnesi nedir?


13

Belirli bir yürütme bağlamında, Değişken nesnesi o yürütme bağlamının Etkinleştirme nesnesidir.

Çevrimiçi araştırmamdan, önceki cümleyi farklı şekillerde yeniden ifade edilmiş bulabiliyorum ama kimse ne olduğunu söyleyemiyor.

Aktivasyon nesnesi nedir?


Bir aktivasyon nesnesi , bir kapsam zincirindeki en üstteki nesnedir ve en alttaki global nesnedir . Daha fazla ayrıntı için bu cevaba bakınız.
ikaruss

Yanıtlar:


17

Köklerden başlayayım ...

Yürütme bağlamı aşağıdakilerden oluşan bir nesnedir:

  • fonksiyonlarda aktivasyon nesnesi olan değişken nesne
  • dış kapsamların bağlantılı bir listesi olarak düşünebileceğiniz kapsam zinciri
  • this değer

Değişken nesne bunlardan biri olabilen soyut bir şeydir:

  • (küresel bağlamda) küresel nesne - yerinde nerede (gibi global değişkenler window, documentya consolebir tarayıcıda) huzurunuzda
  • etkinleştirme nesnesi (ECMAScript'te kapsamları tanımlayan işlevler için)

Etkinleştirme nesnesi aşağıdakileri içeren bir nesnedir:

  • fonksiyonun resmi argümanları
  • arguments bu işlev için nesne
  • bu fonksiyonun içindeki vars ve (adlandırılmış) fonksiyonlar

Bu nedenle, etkinleştirme nesnesi, değişken nesnenin özel bir örneğidir.

Temel olarak, bir işlev içinde, adın dışında erişebileceğiniz tüm yerel şeyler için bir kaptır this. Burada kesin olmayabilirim, ama bence öyle.

Bazı güzel resimlerle daha fazla açıklama:


2

Bir Etkinleştirme nesnesi, bir yürütme işlevinin ortamını ve kapsamını tanımlayan özellikleri tutmak için kullanılan nesnedir. Bu nesnede, örneğin işlev bağımsız değişkenleri depolanır. Tanım gereği, bir şeyi ETKİNLEŞTİRMEK, o şeyin hareket etmesine veya FONKSİYONA neden olur. Yani 'Aktivasyon nesnesi' duyduğunuzda, 'FUNCTION' nesnesini veya daha iyisini düşünün, bir işleve YEREL olan kök nesneyi (yani, FUNCTION LOCAL OBJECT).

Değişken nesnesiyle ilgili olarak, bir Etkinleştirme nesnesi, bir ABSTRACT nesne türünün kendisi olan (buradaki Değişken nesnesine atıfta bulunur) bir Değişken nesnesinin aşağı yukarı somut bir örneğidir. As belirtti burada ...

'Değişken nesne' terimi, şu anda yürütülen bağlamın ortamını ve kapsamını tanımlayan özellikleri içeren herhangi bir nesneyi belirtmek için kullanılan genel veya soyut bir terimdir.

Bu nedenle, global yürütme bağlamının (yani, bir işlev dışındayken) ortamı ve kapsamı içinde, Global nesne Değişken nesnesidir. Tarayıcıda, genel veya en dıştaki yürütme ortamı WINDOW tarayıcısı olduğundan window, Değişken nesnesi olarak kullanılan nesnedir. Bu nedenle var, işlevler dışında anahtar sözcükle bildirilen değişkenler windownesneye sonlanır .

Bununla birlikte, bir işlev kapsamında, değişken bir nesne olan Etkinleştirme nesnesidir (yani işlev yerel nesnesi), çünkü bir yürütme işlevinin kapsamını açıklayan özellikleri depolamak için kullanılan bu nesne budur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.