国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

關(guān)于javascript中的變量對(duì)象和活動(dòng)對(duì)象

andycall / 1888人閱讀

摘要:執(zhí)行上下文的執(zhí)行階段,也有三個(gè)內(nèi)容變量賦值函數(shù)引用執(zhí)行其他代碼。的簡(jiǎn)寫(xiě),叫做活動(dòng)對(duì)象。先說(shuō)一下變量對(duì)象,它的結(jié)構(gòu)大致如此,在函數(shù)被調(diào)用的時(shí)候被創(chuàng)建變量對(duì)象包含函數(shù)的形參函數(shù)聲明變量聲明,三個(gè)內(nèi)容。

關(guān)于javascript中的變量對(duì)象和活動(dòng)對(duì)象
我GitHub上的菜鳥(niǎo)倉(cāng)庫(kù)地址: 點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章
文章在我的博客上的地址: 點(diǎn)擊跳轉(zhuǎn)

? ? ? ? 前面的文章說(shuō)到, 執(zhí)行上下文的創(chuàng)建階段,主要有三個(gè)內(nèi)容:

? ? ? ? 1、創(chuàng)建變量對(duì)象;2、初始化作用域鏈;3、確定this的指向。

? ? ? ? 執(zhí)行上下文的執(zhí)行階段,也有三個(gè)內(nèi)容:

? ? ? ? 1、變量賦值;2、函數(shù)引用;3、執(zhí)行其他代碼。

? ? ? ? 在這里先說(shuō)一個(gè)前提,我提到的函數(shù)調(diào)用,說(shuō)的是執(zhí)行上下文的第一階段,創(chuàng)建階段(還沒(méi)開(kāi)始執(zhí)行函數(shù)體相關(guān)的代碼),提到的函數(shù)執(zhí)行,說(shuō)的是執(zhí)行上下文的第二階段,執(zhí)行階段(開(kāi)始執(zhí)行函數(shù)體相關(guān)的代碼)。

? ? ? ? 其實(shí)在說(shuō)到執(zhí)行上下文中的的變量對(duì)象的時(shí)候,我印象中會(huì)冒出來(lái)兩個(gè)英文簡(jiǎn)寫(xiě):VO和AO。

? ? ? ? VO:Variable Object的簡(jiǎn)寫(xiě),就是變量對(duì)象。

? ? ? ? AO:Activation Object的簡(jiǎn)寫(xiě),叫做活動(dòng)對(duì)象。

? ? ? ? 這兩個(gè)東西有什么區(qū)別呢?

? ? ? ? 我的理解是,他們的區(qū)別就是在于執(zhí)行上下文的不同生命周期階段,變量對(duì)象VO在執(zhí)行上下文的創(chuàng)建階段,而活動(dòng)對(duì)象AO在執(zhí)行上下文的執(zhí)行階段。

? ? ? ? 先說(shuō)一下變量對(duì)象,它的結(jié)構(gòu)大致如此,在函數(shù)被調(diào)用的時(shí)候被創(chuàng)建:

VO:{
    arguments:Arguments,
    FunctionName:reference to function FunctionName(){},
    Variables:undefined
}

? ? ? ? VO(變量對(duì)象)包含:函數(shù)的形參(arguments)、函數(shù)聲明(FunctionDeclaration, FD)、變量聲明(VariableDeclaration,var)三個(gè)內(nèi)容。

? ? ? ? 簡(jiǎn)單來(lái)說(shuō),舉個(gè)例子:

//聲明example函數(shù)
function example(x){
    var a = 10;
    function plus(){
        return a + x;
    }
    return plus();
}
//調(diào)用example函數(shù)
example(5);

? ? ? ? 當(dāng)調(diào)用example函數(shù)的時(shí)候,進(jìn)入執(zhí)行上下文的創(chuàng)建階段,創(chuàng)建的變量對(duì)象為(自己看看什么是函數(shù)的形參、函數(shù)聲明和變量聲明):

VO:{
    arguments:{x:undefined},
    plus:reference to function plus(){},
    a:undefined
}

? ? ? ? 當(dāng)example函數(shù)開(kāi)始執(zhí)行的時(shí)候,進(jìn)入執(zhí)行上下文的執(zhí)行階段,變量對(duì)象就會(huì)被激活,首先通過(guò)arguments屬性初始化成為活動(dòng)對(duì)象AO:

AO:{
    arguments:{callee:example,x:5,length:1},
    plus:reference to function plus(){},
    a:undefined
}

? ? ? ? 當(dāng)然了,arguments屬性的值是Arguments對(duì)象,對(duì)于VO來(lái)說(shuō),由于創(chuàng)建階段只是形參,所以VO只有x一個(gè)undefined的值,而通過(guò)傳入確定的實(shí)參5初始化后,AO中的Arguments就多了指向自身函數(shù)callee和length兩個(gè)屬性了。

? ? ? ? 當(dāng)然,AO對(duì)象是隨著執(zhí)行代碼的執(zhí)行過(guò)程中而變化的,隨著代碼的執(zhí)行,變量開(kāi)始初始化,下一步AO就會(huì)變成:

AO:{
    arguments:{callee:example,x:5,length:1},
    plus:reference to function plus(){},
    a:10
}

? ? ? ? 當(dāng)還有其他變量的時(shí)候,執(zhí)行過(guò)程自行理解一下就行了。

? ? ? ? 所以上下文的執(zhí)行階段:變量賦值、函數(shù)引用、執(zhí)行其他代碼。這個(gè)過(guò)程也可以輕易理解了。

? ? ? ? 最后,想說(shuō)一下全局上下文(或者叫做全局執(zhí)行上下文)的VO和AO,其實(shí)大家也可以知道,其實(shí)我們執(zhí)行所有的代碼,都是基于一個(gè)全局上下文上的,只要你不退出全局上下文(例如瀏覽器的話(huà)全局對(duì)象就是window,你不關(guān)閉窗口的話(huà),全局上下文就不會(huì)跳出執(zhí)行上下文棧),就一直都在全局執(zhí)行上下文的執(zhí)行階段了,所以執(zhí)行的階段就已經(jīng)是AO了。其次,本身沒(méi)有arguments屬性,這個(gè)也可以容易理解,全局對(duì)象它不是函數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/84291.html

相關(guān)文章

  • 關(guān)于javascript中的作用域作用域鏈

    摘要:作用域的類(lèi)別可以影響到變量的取值,分為詞法作用域靜態(tài)作用域和動(dòng)態(tài)作用域。而,采用的就是詞法作用域,或者叫靜態(tài)作用域。 關(guān)于javascript中的作用域和作用域鏈 我GitHub上的菜鳥(niǎo)倉(cāng)庫(kù)地址: 點(diǎn)擊跳轉(zhuǎn)查看其他相關(guān)文章 文章在我的博客上的地址: 點(diǎn)擊跳轉(zhuǎn) ? ? ? ? 前面的文章說(shuō)到, 執(zhí)行上下文的創(chuàng)建階段,主要有三個(gè)內(nèi)容: ? ? ? ? 1、創(chuàng)建變量對(duì)象;2、初始化作用域...

    lcodecorex 評(píng)論0 收藏0
  • 關(guān)于javascript 中的高級(jí)定時(shí)器的若干問(wèn)題

    摘要:閉包閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)當(dāng)某個(gè)函數(shù)被調(diào)用時(shí),會(huì)創(chuàng)建一個(gè)執(zhí)行環(huán)境及相應(yīng)的作用域鏈。要注意通過(guò)第句聲明的這個(gè)方法屬于構(gòu)造函數(shù)生成的對(duì)象,而不屬于構(gòu)造函數(shù)的變量對(duì)象,也就是說(shuō),并不存在于作用域鏈中。 看到評(píng)論里有仁兄建議我試試箭頭函數(shù),真是受寵若驚,本來(lái)寫(xiě)這篇文章也只是想記錄寫(xiě)要點(diǎn)給自己日后看的。今天早上看到一篇總結(jié)javascript中this的文章JavaScr...

    zr_hebo 評(píng)論0 收藏0
  • js知識(shí)梳理6:關(guān)于函數(shù)的要點(diǎn)梳理(2)(作用域鏈閉包)

    摘要:在此例中,在匿名函數(shù)被返回后,它的作用域鏈初始化為包含函數(shù)的活動(dòng)對(duì)象和全局變量對(duì)象。函數(shù)在執(zhí)行完畢后,其活動(dòng)對(duì)象也不會(huì)被銷(xiāo)毀,因?yàn)槟涿瘮?shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對(duì)象,結(jié)果就是只是的執(zhí)行環(huán)境的作用域鏈會(huì)被銷(xiāo)毀,其活動(dòng)對(duì)象會(huì)留在內(nèi)存中。 寫(xiě)在前面 注:這個(gè)系列是本人對(duì)js知識(shí)的一些梳理,其中不少內(nèi)容來(lái)自書(shū)籍:Javascript高級(jí)程序設(shè)計(jì)第三版和JavaScript權(quán)威指南第六版,...

    aristark 評(píng)論0 收藏0
  • 我所認(rèn)識(shí)的JavaScript作用域鏈原型鏈

    摘要:為了防止之后自己又開(kāi)始模糊,所以自己來(lái)總結(jié)一下中關(guān)于作用域鏈和原型鏈的知識(shí),并將二者相比較看待進(jìn)一步加深理解。因此我們發(fā)現(xiàn)當(dāng)多個(gè)作用域相互嵌套的時(shí)候,就形成了作用域鏈。原型鏈原型說(shuō)完了作用域鏈,我們來(lái)講講原型鏈。   畢業(yè)也整整一年了,看著很多學(xué)弟都畢業(yè)了,忽然心中頗有感慨,時(shí)間一去不復(fù)還呀。記得從去年這個(gè)時(shí)候接觸到JavaScript,從一開(kāi)始就很喜歡這門(mén)語(yǔ)言,當(dāng)時(shí)迷迷糊糊看完了《J...

    Bmob 評(píng)論0 收藏0
  • JavaScript中的執(zhí)行上下文變量對(duì)象

    摘要:以上簡(jiǎn)單總結(jié)了下對(duì)執(zhí)行上下文和變量對(duì)象的理解,主要在于記錄總結(jié)一下學(xué)習(xí)成果,目前文章的水平實(shí)在不敢談分享。 執(zhí)行上下文(Execution Context) 文章同步到github javaScript中的執(zhí)行上下文和變量對(duì)象 JavaScript代碼執(zhí)行的過(guò)程,包括編譯和執(zhí)行兩個(gè)階段,編譯就是通過(guò)詞法分析,構(gòu)建抽象抽象語(yǔ)法樹(shù),并編譯成機(jī)器識(shí)別的指令,在JavaScript代碼編譯階段...

    why_rookie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<