日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

js二種特殊數(shù)據(jù)類型 es6如何添加symbol( 二 )


當(dāng)我們用一個新的表達式創(chuàng)建一個對象時,構(gòu)造函數(shù)被new以方法的形式調(diào)用:
在上面的示例代碼中,構(gòu)造函數(shù)在開頭和結(jié)尾所做的事情,新的表達式,為我們做了:
New會創(chuàng)建一個空白對象,使其原型鏈綁定構(gòu)造函數(shù)的原型屬性,使其構(gòu)造函數(shù)屬性綁定構(gòu)造函數(shù);然后用這個對象作為這個上下文調(diào)用構(gòu)造函數(shù),如果構(gòu)造函數(shù)不返回值,就把空白對象作為創(chuàng)建的對象 。用代碼寫的是:
new調(diào)用的構(gòu)造函數(shù)已經(jīng)轉(zhuǎn)化為構(gòu)造函數(shù),但為了保持其構(gòu)造函數(shù)能力,一般實現(xiàn)如下:
接下來,考慮類的繼承 。
實例對象的初始化流程是:先由超類的構(gòu)造函數(shù)初始化,再由子類的構(gòu)造函數(shù)初始化,以滿足子類覆蓋超類的要求 ?;诖?,示例代碼如下:
寫到這里,我們發(fā)現(xiàn)是一堆標(biāo)準(zhǔn)代碼不得不寫 。所以早期很多前端框架陸續(xù)提供了上述代碼的封裝方案,但是一直沒有統(tǒng)一的解決方案,直到ES6直接提供了類語法,整個事情才告一段落:
注意:JavaScript中的屬性分為存儲屬性和訪問屬性(分別對應(yīng)傳統(tǒng)OOP語言中的字段和屬性) 。只有原型中的方法和訪問屬性可以在類中聲明,但舊的方法是在原型中聲明存儲屬性 。
類表達只是語法層面的封裝,最終還是基于原型和原型鏈 。
雖然我們不 。;現(xiàn)在不需要根據(jù)那套復(fù)雜的規(guī)范來聲明類,理解原型和原型鏈,深入理解JavaScript的OOP機制仍然非常重要 。
最后給出JavaScript內(nèi)置對象之間的原型鏈圖(粗箭頭為__proto__屬性,細(xì)箭頭為原型屬性,虛箭頭為構(gòu)造器屬性):
【js二種特殊數(shù)據(jù)類型 es6如何添加symbol】(Valu:數(shù)、字符串、布爾型;符號、Contain:陣列、集合、地圖)

推薦閱讀