術語「激活對象」是「變量對象」的另一個名稱還是實際上它們之間有任何區別?我一直在閱讀一些關於如何在執行上下文中形成變量作用域的JavaScript文章,並且從我的角度來看,似乎在大多數文章中他們可以交替使用這兩個術語。JavaScript中的激活和變量對象?
回答
嗯,我剛剛學到了一些東西:)。從this article,它會出現一個函數的執行上下文內,激活對象被用作可變對象:
當執行上下文中創建了一些事情發生在限定的順序。首先,在函數的執行上下文中創建一個「激活」對象。
然後,「變量實例化」過程使用ECMA 262引用爲「變量」對象的對象進行。但是,Activation對象用作Variable對象(請注意,這很重要:它們是同一個對象)。爲每個函數的形式參數創建Variable對象的命名屬性,如果函數調用的參數與這些參數相對應,則將這些參數的值分配給屬性(否則分配的值未定義)。
但是,當您在全球範圍內的時候,沒有一個激活對象,因此全局對象作爲變量對象,而不是:
全球執行環境得到了一些輕微不同的處理,因爲它沒有參數,所以它不需要定義的Activation對象來引用它們。 [...]全局對象用作Variable對象,這就是爲什麼全局聲明的函數成爲全局對象的屬性。
所以它聽起來像「激活對象」和「變量對象」是一個函數上下文中的同一事物,但不是在全局上下文中。
一種激活對象處於範圍鏈與最下面爲全局對象最上面的對象。 鑑於可變對象是抽象的概念,因此,根據其執行上下文,是在範圍鏈任何鏈路包括激活/全局對象。
它包含:
- 所有變量和函數你的函數體內聲明;
- 由函數簽名指定的名爲的參數;
- 參數作爲對象名爲
arguments
(如果您希望您的函數支持多個簽名)。
它不包含:
this
(因爲它不是一個變量);- 命名函數表達式。
另外信息 - JavaScript. The core.
很少引號TL的情況下;博士:
甲可變對象是數據的範圍與執行相關上下文。這是一個特殊對象與上下文相關聯,其中存儲變量和函數聲明正在上下文中定義。
A 變量對象是抽象概念。在不同的上下文類型中,物理上,它使用不同的對象來呈現。
[..]在全球範圍內的可變對象是全局對象本身[..]
[..]的函數的可變對象是相同的簡單可變對象 ,但除了變量和函數聲明,它還存儲形式參數和
arguments
對象,被稱爲ACTIVA對象。[..]在一個代碼訪問
this
時,它的值被直接從執行上下文採取無任何範圍鏈查找。
您可以向我們展示每種情況下的一些源代碼嗎? – 2014-01-24 05:09:33
它更準確的說,一個激活對象的類型是可變的對象。這與一個人是如何成爲一種人類相似。如上所述here,術語「可變對象」只是用來描述認爲描述當前正在執行上下文的環境和範圍的性質的任何對象廣義術語。
因此,全局執行上下文(即,外部的任何函數)內,它最終被全局對象。爲什麼?因爲它是保存描述全局執行上下文的環境和範圍的屬性的對象。
儘管在函數本地執行上下文中(即函數內),它是變量對象的函數本地對象(也稱爲激活對象),因爲它是保存描述環境的屬性的對象,以及當前正在執行的功能的範圍。例如函數參數等屬性。
- 1. 對象和變量在Javascript
- 2. Javascript對象和變量
- 3. 的Javascript全局上下文的可變對象VS功能激活對象
- 4. 對象中的Javascript變量
- 5. 活動的對象變量
- 6. 使用對象變量激活和取消WordPress鉤子的問題
- 7. JavaScript變量對象
- 8. Javascript對象變量?
- 9. 生產中的MySQL變量innodb_file_per_table激活
- 10. 激活Drools中子對象的規則
- 11. Javascript對象的變量undefined
- 12. 如何在html中激活Javascript(Angularjs)變量智能感知
- 13. Javascript對象和變量w /同名嗎?
- 14. JavaScript對象和公共變量
- 15. Javascript全局變量或對象變量
- 16. 如何在類和活動中共享對象和變量
- 17. JavaScript:未定義對象中的變量
- 18. 對象中的JavaScript變量賦值
- 19. Javascript對象名稱中的變量
- 20. Javascript對象中的變量方法
- 21. 訪問javascript中的對象變量
- 22. unity3d遊戲對象已被激活或取消激活
- 23. Javascript對象鍵爲變量
- 24. Javascript變量對象鍵
- 25. JavaScript改變對象內部的變量
- 26. Actionscript 3.0激活一個對象的EventListener
- 27. javascript全局變量在javascript中返回爲[對象對象]
- 28. JavaScript在變量中擴展對象
- 29. Javascript停止激活
- 30. Accordion.accordion( '激活',變量)不工作
我從來沒有聽說過「變量對象」的。你從哪裏得到這個指定? – Zecc 2011-06-13 23:09:07
Zecc - ES3§10.1.3變量Instatiation:「每個執行上下文都與它關聯一個變量對象。」 ES5將其稱爲*變量環境*(ES5§10.3,表19),措辭不同但實際上是相同的事情:*創建執行上下文時,其詞法環境和變量環境組件最初具有相同的值* – RobG 2011-06-14 01:19:44