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

資訊專欄INFORMATION COLUMN

Javascript重溫OOP之JS的解析與執(zhí)行過程

xumenger / 2270人閱讀

摘要:了解面向?qū)ο缶幊讨埃紫纫私獾膱?zhí)行順序。的解析過程分為兩個階段預處理階段與執(zhí)行期。在執(zhí)行階段的執(zhí)行上下文對象由賦值為指向?qū)瘮?shù)

了解js面向?qū)ο缶幊讨埃紫纫私鈐s的執(zhí)行順序。js的解析過程分為兩個階段:預處理階段與執(zhí)行期。

預處理階段

在預處理階段,js會首先創(chuàng)建一個執(zhí)行上下文對象(Execute Context,然后掃描聲明式函數(shù)和用var定義的變量,將其加入執(zhí)行上下文環(huán)境中,看下面栗子:

var a = 5; 
b = 1;
function f(){}
var g = function(){}

//執(zhí)行上下文對象
/*Execute Context{
    a: undefined
    f: 對函數(shù)的引用
}*/

從上面可以看出,js在預處理階段創(chuàng)建了一個預處理對象,將聲明式函數(shù)和var定義的變量放入其中,這里忽略了沒有用var聲明的b以及函數(shù)表達式 g。

alert(a);  // undefined
alert(b);    // 報錯 b in not defined
alert(c);    // 函數(shù)體被打印出來
alert(d);    // 報錯

var a = 1;
b = 5;
function c(){
    console.log("c");
}
var d = function(){
    console.log("d");

}

從上面例子的輸出結(jié)果就可以看出js預處理階段做了哪些事情,對于沒有加進函數(shù)變量預處理階段的變量或函數(shù),會直接報錯。

對于沖突解決有兩種情況:

處理函數(shù)聲明有沖突時,會覆蓋前面

處理函數(shù)變量聲明有沖突時,會直接忽略

alert(f); // 彈出function f(){console.log("fff");}
function f(){
    console.log("ff");
}

var f = 10;

function f(){
    console.log("fff");
}

總結(jié)一句話:函數(shù)是js里的第一等公民。

執(zhí)行階段

在執(zhí)行階段中,js會先掃描函數(shù)聲明后掃描變量,然后給預處理階段中執(zhí)行上下文對象中的成員賦值,如果沒有用var聲明的變量,會成為外部執(zhí)行上下文的成員。

alert(a);
alert(f);
var a = 1;
function f(){}

//在執(zhí)行階段的執(zhí)行上下文對象
/*{
    a: 1; // 由undefined賦值為1
    f: 指向?qū)瘮?shù)
}*/

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/86452.html

相關(guān)文章

  • Javascript重溫OOP作用域閉包

    摘要:的變量作用域是基于其特有的作用域鏈的。需要注意的是,用創(chuàng)建的函數(shù),其作用域指向全局作用域。所以,有另一種說法認為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實體。 作用域 定義 在編程語言中,作用域控制著變量與參數(shù)的可見性及生命周期,它能減少名稱沖突,而且提供了自動內(nèi)存管理 --javascript 語言精粹 我理解的是,一個變量、函數(shù)或者成員可以在代碼中訪問到的范圍。 js的變量作...

    JessYanCoding 評論0 收藏0
  • Javascript重溫OOP原型原型鏈

    摘要:在構(gòu)造函數(shù)中的中定義的屬性和方法,會被創(chuàng)建的對象所繼承下來。從上面的輸出結(jié)果看出,指向了其構(gòu)造函數(shù)的,而本身也是一個對象,其內(nèi)部也有屬性,其指向的是直到最后指向,這條原型鏈才結(jié)束。和都指向,說明原型鏈到終止。 prototype原型對象 每個函數(shù)都有一個默認的prototype屬性,其實際上還是一個對象,如果被用在繼承中,姑且叫做原型對象。 在構(gòu)造函數(shù)中的prototype中定義的屬性...

    lindroid 評論0 收藏0
  • Javascript重溫OOP面向?qū)ο?/b>

    摘要:類的繼承建立繼承關(guān)系修改的指向調(diào)用父類方法調(diào)用父類的構(gòu)造器調(diào)用父類上的方法封裝命名空間是沒有命名空間的,因此可以用對象模擬。參考資料面向?qū)ο? 面向?qū)ο蟪绦蛟O計(Object-oriented programming,OOP)是一種程序設計范型,同時也是一種程序開發(fā)的方法。對象指的是類的實例。它將對象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴展性。——維基百...

    AbnerMing 評論0 收藏0
  • Javascript重溫OOP對象

    摘要:對構(gòu)造函數(shù)使用運算符,就能生成實例,并且變量會綁定在實例對象上。這個對象的所有屬性和方法,都會被構(gòu)造函數(shù)的實例繼承。 對象 對象的含義 所謂對象,就是一種無序的數(shù)據(jù)集合,由若干個鍵值對(key-value)構(gòu)成。 對象的創(chuàng)建 使用new運算符創(chuàng)建Object var p = new Object(); p.name = Tony; 使用對象字面量的形式 //對象字面量形...

    RancherLabs 評論0 收藏0
  • 重溫基礎(chǔ)】15.JS對象介紹

    摘要:構(gòu)造函數(shù)通常首字母大寫,用于區(qū)分普通函數(shù)。這種關(guān)系常被稱為原型鏈,它解釋了為何一個對象會擁有定義在其他對象中的屬性和方法。中所有的對象,都有一個屬性,指向?qū)嵗龑ο蟮臉?gòu)造函數(shù)原型由于是個非標準屬性,因此只有和兩個瀏覽器支持,標準方法是。 從這篇文章開始,復習 MDN 中級教程 的內(nèi)容了,在初級教程中,我和大家分享了一些比較簡單基礎(chǔ)的知識點,并放在我的 【Cute-JavaScript】系...

    booster 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<