日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解JavaScript私有類字段和TypeScript私有修飾符

瀏覽:55日期:2023-06-05 13:34:29
JavaScript私有類字段和隱私需求

在過去,JavaScript 沒有保護(hù)變量不受訪問的原生機(jī)制,當(dāng)然除非是典型閉包。

閉包是 JavaScript 中許多類似于私有模式(如流行的模塊模式)的基礎(chǔ)。但是,近年來 ECMAScript 2015 類被使用后,開發(fā)人員感到需要對(duì)類成員的隱私進(jìn)行更多控制。

類字段提案(在撰寫本文時(shí)處于第 3 階段)試圖通過引入私有類字段來解決問題。

讓我們看看它們是什么樣子的。

一個(gè) JavaScript 私有類字段的例子

這是一個(gè)帶有私有字段的 JavaScript 類,請(qǐng)注意,與“公有”成員不同,每個(gè)私有字段必須在訪問前進(jìn)行聲明:

class Person { #age; #name; #surname; constructor(name, surname, age) { this.#name = name; this.#surname = surname; this.#age = age; } getFullName() { return `${this.#name} + ${this.#surname}`; }}

無法從類的外部訪問私有類字段:

class Person { #age; #name; #surname; constructor(name, surname, age) { this.#name = name; this.#surname = surname; this.#age = age; } getFullName() { return `${this.#name} + ${this.#surname}`; }}const marta = new Person('Marta', 'Cantrell', 33);console.log(marta.#age); // SyntaxError

這是真正的“隱私”。如果你會(huì)一點(diǎn) TypeScript,可能會(huì)問“原生”私有字段與TypeScript 中的 private 修飾符有什么共同點(diǎn)。

好吧,答案是:沒有。但是為什么?

TypeScript 中的 private 修飾符

有著傳統(tǒng)編程語言背景的開發(fā)人員應(yīng)該熟悉 TypeScript 中的 private 修飾符。簡而言之,此關(guān)鍵字的目的是拒絕從類的外部訪問類成員。

但是請(qǐng)不要忘記,TypeScript 是處于 JavaScript 之上的一層,并且 TypeScript 編譯器應(yīng)該剝離所有花里胡哨的 TypeScript 注釋,包括private。

這意味著下面的類做不到你想要的工作:

class Person { private age: number; private name: string; private surname: string; constructor(name: string, surname: string, age: number) { this.name = name; this.surname = surname; this.age = age; } getFullName() { return `${this.name} + ${this.surname}`; }}const liz = new Person('Liz', 'Cantrill', 31);// @ts-ignoreconsole.log(liz.age);

如果沒有//@ts-ignore,在訪問liz.age時(shí)僅會(huì)在 TypeScript中引發(fā)錯(cuò)誤,但是在編譯之后,你將會(huì)得到下面的 JavaScript代碼:

'use strict';var Person = /** @class */ (function () { function Person(name, surname, age) {this.name = name;this.surname = surname;this.age = age; } Person.prototype.getFullName = function () {return this.name + ' + ' + this.surname; }; return Person;}());var liz = new Person('Liz', 'Cantrill', 31);console.log(liz.age); // 31

與預(yù)期的一樣,我們可以從控制臺(tái)輸出liz.age。這里的主要觀點(diǎn)是 TypeScript 中的 private 不是那么私有,并且僅在 TypeScript 級(jí)別才感到方便,而不是“真正的隱私”。

接下來我們開始討論:TypeScript 中的“原生”私有類字段。

TypeScript 中的私有類字段

TypeScript 3.8 將支持 ECMAScript 私有字段,千萬別和TypeScript private 修飾符混淆。

這是在 TypeScript 中具有私有類字段的類:

class Person { #age: number; #name: string; #surname: string; constructor(name:string, surname:string, age:number) {this.#name = name;this.#surname = surname;this.#age = age; } getFullName() {return `${this.#name} + ${this.#surname}`; }}

除了類型注釋外,與原生 JavaScript 沒什么不同。無法從外部訪問成員。但是 TypeScript 中私有字段的真正問題在于它們?cè)诤笈_(tái)使用了 WeakMap。

要編譯此代碼,我們需要調(diào)整 tsconfig.json 中的目標(biāo)編譯版本,該版本最低必須是ECMAScript 2015:

{ 'compilerOptions': { 'target': 'es2015', 'strict': true, 'lib': ['dom','es2015'] }}

這可能會(huì)出現(xiàn)問題,具體取決于目標(biāo)瀏覽器,除非你打算為 WeakMap 提供polyfill,否則,如果只是為了編寫精美的新語法,工作量就變得太多了。

JavaScript 中總是存在這種緊張關(guān)系,你確實(shí)想使用新語法,但另一方面,你不想由于大量的 polyfill 影響使用戶體驗(yàn)。

另一方面,即使你希望將其發(fā)布到較新的瀏覽器中,也不必?fù)?dān)心私有類字段。最起碼現(xiàn)在是這樣。甚至Firefox都沒有實(shí)施該建議。

以上就是詳解JavaScript私有類字段和TypeScript私有修飾符的詳細(xì)內(nèi)容,更多關(guān)于JavaScript私有類字段和TypeScript私有修飾符的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99视频在线精品国自产拍免费观看| 国产精品久久久亚洲一区| 老司机免费视频一区二区| 亚洲va久久久噜噜噜久久| 久久久久美女| 欧美日韩国产高清| 亚洲欧美日韩国产综合精品二区| 视频一区在线视频| 97久久亚洲| 麻豆精品视频在线观看免费| 国产一区2区| 久久久天天操| 国产日韩专区| 日韩欧美三区| 国产精品1luya在线播放| 国内自拍视频一区二区三区| 日韩国产一区| 91精品99| 少妇精品久久久一区二区三区| 亚洲视频二区| 国产精品主播在线观看| 成人在线观看免费视频| 久久精品青草| 天使萌一区二区三区免费观看| 日韩激情一区二区| 久久久久久久久成人| 老牛影视精品| 99香蕉国产精品偷在线观看 | 你懂的亚洲视频| caoporn视频在线| 999久久久精品国产| 免播放器亚洲一区| 国产亚洲观看| 亚洲va中文在线播放免费| 另类av一区二区| 久久伊人亚洲| 最新亚洲一区| 国产精品成人3p一区二区三区| 日韩高清中文字幕一区二区| 蜜臀久久99精品久久久画质超高清 | 99国产精品| 97成人在线| 欧美国产美女| 亚洲一区有码| 不卡福利视频| 亚洲精品无播放器在线播放| 91欧美日韩| 亚洲精品无播放器在线播放| 欧美www视频在线观看| 亚洲在线一区| 国产不卡av一区二区| 国产一区导航| 国产成人精品一区二区三区在线| 国产偷自视频区视频一区二区| 日本h片久久| 性感美女一区二区在线观看| 亚洲精品成a人ⅴ香蕉片| 国产精品啊v在线| 99精品视频精品精品视频| 日韩不卡在线观看日韩不卡视频 | 亚洲免费成人| 国产中文欧美日韩在线| 视频一区二区不卡| 日韩国产一区| 国产精品视频一区视频二区| 亚洲精品小说| 国产一区二区三区网| 免费在线观看不卡| 日韩成人亚洲| 国产亚洲高清一区| 婷婷综合网站| 亚洲黄色中文字幕| 国产美女视频一区二区| 亚洲精品一二三区区别| 福利精品在线| 日韩精品一区二区三区中文| 激情五月综合网| 老司机精品在线| 日本综合视频| 一区二区亚洲精品| 蜜桃av在线播放| 久久久91麻豆精品国产一区| 亚洲影院天堂中文av色| 99精品视频精品精品视频| 国产探花在线精品| 1024精品久久久久久久久| 国产精品美女久久久久久不卡| 9久re热视频在线精品| 精品视频97| 国产欧美午夜| 免费一级片91| 欧美日韩国产在线观看网站| а√在线中文在线新版| 国产精品调教| 日本成人在线网站| 亚洲尤物av| 丝袜亚洲精品中文字幕一区| 蜜臀91精品国产高清在线观看| 红杏一区二区三区| 国产精品qvod| 日韩欧美久久| 中文字幕乱码亚洲无线精品一区| 黄色av日韩| 久久中文视频| 欧美日韩视频网站| 成人国产精品一区二区网站| 欧美黑人做爰爽爽爽| 欧美日韩精品一区二区三区在线观看| 一级成人国产| 亚洲精品麻豆| 日韩激情一区二区| 日韩激情精品| 欧美中文一区| 欧美一区91| 欧美一级久久| 奇米亚洲欧美| 国产精品对白| 国产专区精品| 日本久久黄色| 天堂√8在线中文| 精精国产xxxx视频在线播放| 日韩在线观看不卡| 在线日韩中文| 亚洲欧美日本国产专区一区| 视频在线在亚洲| 日本一不卡视频| 国产调教一区二区三区| 国产精品久久久网站| 麻豆91小视频| 国产精品99在线观看| 精品国产aⅴ| 正在播放日韩精品| 久久在线电影| 美国三级日本三级久久99 | 久久只有精品| 高潮一区二区| 国产高清一区| 婷婷综合福利| 久久精品国产亚洲一区二区三区| 国产一区二区久久久久| sm捆绑调教国产免费网站在线观看| 伊人久久在线| 不卡中文一二三区| 亚洲人www| 麻豆国产精品| 亚洲91视频| 玖玖玖国产精品| 日韩欧美美女在线观看| 国产精品流白浆在线观看| 成人在线丰满少妇av| 99久久夜色精品国产亚洲1000部| 鲁大师成人一区二区三区 | 亚洲h色精品| 国产精品外国| 国产精品一区二区美女视频免费看 | 国产拍在线视频| 国产一区成人| 国产精品久久久一区二区| 久久精品亚洲| 免费观看不卡av| 97久久中文字幕| 日韩黄色大片| 免费看日韩精品| 韩日一区二区| 日韩专区在线视频| 久久精品国产99| 亚洲激情黄色| 麻豆视频久久| 亚洲一区日韩在线| 国产精品黄色片| 欧美日韩国产传媒| 国产精品亚洲欧美一级在线| 99久久九九| 婷婷五月色综合香五月| 国产v日韩v欧美v| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久精品五月| 日韩视频中文| 欧美激情一区| 另类激情亚洲| 国产在线观看www| 日韩精品视频网站| 国产99久久| 国产精品美女午夜爽爽| japanese国产精品| 欧美中文高清| 午夜日韩在线| 色爱综合网欧美| 日韩精彩视频在线观看| 亚洲国内欧美| 成人午夜网址| 日韩精品亚洲aⅴ在线影院| 日韩国产一区二区| 国产欧美一区| 石原莉奈在线亚洲二区| 伊伊综合在线| 久久精品999| 丝袜a∨在线一区二区三区不卡| 色综合五月天| 欧美日韩亚洲三区|