Apa yang dimaksud dengan objek Aktivasi dalam JavaScript?

13

Dalam konteks eksekusi yang diberikan, objek Variabel adalah objek Aktivasi dari konteks eksekusi itu.

Dari riset online saya, saya dapat menemukan kalimat sebelumnya diulang dengan cara yang berbeda tetapi tidak ada yang bisa mengatakan apa itu.

Apa itu objek Aktivasi?

rsman
sumber
Sebuah objek aktivasi adalah objek paling atas dalam lingkup rantai dengan paling bawah yang menjadi obyek global . Lihat jawaban ini untuk lebih jelasnya.
ikaruss

Jawaban:

17

Biarkan saya mulai dari akar ...

Konteks eksekusi adalah objek yang terdiri dari:

  • objek variabel, yang merupakan objek aktivasi dalam hal fungsi
  • rantai lingkup, yang dapat Anda anggap sebagai daftar terkait dari lingkup luar
  • this nilai

Objek variabel adalah hal yang abstrak, yang dapat berupa salah satu dari itu:

  • objek global (dalam konteks global) - tempat vars global (seperti window, documentatau consoledi browser) berada
  • objek aktivasi (untuk fungsi, yang mendefinisikan cakupan dalam ECMAScript)

Objek aktivasi adalah objek yang menampung:

  • arg formal fungsi
  • arguments objek untuk fungsi ini
  • setiap vars dan fungsi (bernama) di dalam fungsi ini

Jadi, objek aktivasi hanyalah kasus khusus dari objek variabel.

Ini pada dasarnya adalah wadah untuk semua barang lokal yang dapat Anda akses dengan nama di dalam suatu fungsi, kecuali untuk this. Saya mungkin tidak tepat di sini, tapi itulah yang saya pikirkan.

Penjelasan lebih lanjut dengan beberapa gambar yang bagus:

skrip
sumber
2

Objek Aktivasi adalah objek yang digunakan untuk memegang properti yang menggambarkan lingkungan dan ruang lingkup fungsi eksekusi. Di objek inilah argumen fungsi misalnya disimpan. Menurut definisi, AKTIFKAN sesuatu berarti menyebabkan sesuatu itu bertindak atau FUNGSI. Jadi ketika Anda mendengar 'objek Aktivasi', pikirkan objek 'FUNGSI', atau lebih baik lagi, objek root yang LOKAL ke suatu fungsi (yaitu, FUNGSI LOKAL OBYEK).

Berkenaan dengan objek Variabel, objek Aktivasi lebih atau kurang contoh konkret dari objek Variabel, yang itu sendiri (mengacu pada objek Variabel di sini) tipe objek ABSTRAK. Seperti yang dinyatakan di sini ...

Istilah 'Objek variabel' adalah istilah umum atau abstrak yang digunakan untuk merujuk ke objek apa pun yang memiliki properti yang menggambarkan lingkungan dan ruang lingkup konteks yang sedang dijalankan.

Oleh karena itu, dalam lingkungan dan ruang lingkup konteks eksekusi global (yaitu, ketika di luar fungsi), objek Global adalah objek Variabel. Di browser, karena lingkungan pelaksana global atau terluar adalah browser WINDOW, itu adalah windowobjek yang akhirnya digunakan sebagai objek Variabel. Inilah sebabnya mengapa variabel yang dideklarasikan dengan varkata kunci di luar fungsi berakhir pada windowobjek.

Namun, dalam lingkup fungsi, itu adalah objek Aktivasi (yaitu, fungsi objek lokal) yang merupakan objek variabel karena objek inilah yang digunakan untuk menyimpan properti yang menggambarkan ruang lingkup fungsi pelaksana.

ify.io
sumber