最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6 Class中實(shí)現(xiàn)私有屬性的一些方法總結(jié)

 更新時(shí)間:2019年07月08日 09:48:57   作者:_安歌  
這篇文章主要給大家介紹了關(guān)于ES6 Class中實(shí)現(xiàn)私有屬性的一些方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ES6具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

私有屬性

私有屬性是面向?qū)ο缶幊蹋∣OP)中非常常見(jiàn)的一個(gè)特性,一般滿足以下的特點(diǎn):

  • 能被class內(nèi)部的不同方法訪問(wèn),但不能在類外部被訪問(wèn);
  • 子類不能繼承父類的私有屬性。

備胎Class

時(shí)間回到四年前,2015年6月,ES6發(fā)布成為標(biāo)準(zhǔn),為了紀(jì)念這個(gè)歷史性時(shí)刻,這個(gè)標(biāo)準(zhǔn)又被稱為ES2015,至此,JavaScript中的class從備胎中轉(zhuǎn)正。在這之前,class一直作為JS的關(guān)鍵字,雪藏不見(jiàn)天日。
class被認(rèn)為是JS的一種語(yǔ)法糖,它為JavaScript帶來(lái)了用面向?qū)ο蟮乃枷朊枋鲆粋€(gè)實(shí)體的能力。但似乎還遠(yuǎn)遠(yuǎn)不夠,class的能力遠(yuǎn)沒(méi)滿足JS開發(fā)者們的期待。于是,TC39的大佬們也努力地去做到更好,并推出了一項(xiàng)新的提案:

class Foo {
 #a; // 私有屬性
 constructor(a, b) {
 this.#a = a;
 this.b = b
 }
}

上面私有屬性的聲明,需要先經(jīng)過(guò)Babel等編譯器編譯后才能正常使用。

提案已經(jīng)到Stage 3了,未來(lái)可期!

可是,一眾JSer們已經(jīng)等不及了......

JSer的掙扎

通過(guò)對(duì)數(shù)據(jù)的一定封裝,JS開發(fā)者們走上了曲線實(shí)現(xiàn)“私有屬性”之路。

1. 約定俗成

JS界以一種不成文的規(guī)定,在變量前加上下劃線"_"前綴,約定這是一個(gè)私有屬性;但實(shí)際上,它仍然是一個(gè)穿上皇帝新衣般的公共屬性。

2. 閉包

在constructor作用域內(nèi)定義局部變量,內(nèi)部載通過(guò)閉包的方式對(duì)外暴露該變量。

這種方式,雖然實(shí)現(xiàn)了私有屬性外部不可訪問(wèn),但在類內(nèi)部,該屬性同樣沒(méi)法在不同的方法內(nèi)共享,仍然不是嚴(yán)格意義上的“私有屬性”。

3. Symbols & Getters

利用Symbol變量可以作為對(duì)象key的特點(diǎn),我們可以模擬實(shí)現(xiàn)更真實(shí)的私有屬性。

可是,也不是毫無(wú)破綻:

借助getOwnPropertySymbols方法可以取出對(duì)象的Symbol鍵值。

4. WeakMap & Getters

WeakMap的實(shí)現(xiàn)與Symbol如出一轍。

巨人的肩膀

以上,是目前階段JS實(shí)現(xiàn)屬性私有比較可行的方案,可能實(shí)際中很少應(yīng)用,但如果你在面試中遇到這個(gè)問(wèn)題,或許這些方案可以參考下。

然后,所有這些方案里面,建議選TypeScript的private。

最后,關(guān)于JS中實(shí)現(xiàn)私有屬性,歡迎讀者們?cè)u(píng)論交流你的看法~

參照:

ECMAScript Classes - Keeping Things Private

原文:Github

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

盐津县| 容城县| 临湘市| 沐川县| 靖江市| 阿拉尔市| 阿坝县| 江源县| 安陆市| 剑川县| 宁陕县| 芷江| 边坝县| 宜川县| 泰兴市| 凌海市| 侯马市| 榆树市| 霍州市| 河北省| 嘉黎县| 贵南县| 阜宁县| 紫云| 荣成市| 郧西县| 无为县| 唐河县| 凤城市| 南郑县| 福清市| 怀来县| 德阳市| 万年县| 潮州市| 井研县| 甘孜| 龙口市| 库车县| 岑巩县| 新宾|