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

您的位置:首頁技術文章
文章詳情頁

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

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

在過去,JavaScript 沒有保護變量不受訪問的原生機制,當然除非是典型閉包。

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

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

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

一個 JavaScript 私有類字段的例子

這是一個帶有私有字段的 JavaScript 類,請注意,與“公有”成員不同,每個私有字段必須在訪問前進行聲明:

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

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

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

TypeScript 中的 private 修飾符

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

但是請不要忘記,TypeScript 是處于 JavaScript 之上的一層,并且 TypeScript 編譯器應該剝離所有花里胡哨的 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時僅會在 TypeScript中引發錯誤,但是在編譯之后,你將會得到下面的 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

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

接下來我們開始討論: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 中私有字段的真正問題在于它們在后臺使用了 WeakMap。

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

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

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

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

另一方面,即使你希望將其發布到較新的瀏覽器中,也不必擔心私有類字段。最起碼現在是這樣。甚至Firefox都沒有實施該建議。

以上就是詳解JavaScript私有類字段和TypeScript私有修飾符的詳細內容,更多關于JavaScript私有類字段和TypeScript私有修飾符的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
美女尤物久久精品| 国产精品99久久精品| 麻豆精品av| 亚洲一二av| 好吊日精品视频| 中文字幕免费一区二区| 亚洲精品电影| 美女视频免费精品| 日韩国产在线观看一区| 99re国产精品| 免费人成精品欧美精品| 亚洲激情五月| 久久精品99久久无色码中文字幕| 99精品视频在线观看免费播放| 精品欠久久久中文字幕加勒比| 欧美日本三区| 国产日韩高清一区二区三区在线 | 在线视频免费在线观看一区二区| 国产乱码精品一区二区三区四区 | 精品国产aⅴ| 精品国产aⅴ| 福利一区和二区| 国产网站在线| 亚洲激情久久| 老牛国产精品一区的观看方式| 国产模特精品视频久久久久| 亚洲在线网站| 亚洲精品在线国产| 亚洲三级观看| 青青青国产精品| 日韩精品社区| 国产精品久久久久久av公交车| 深夜福利视频一区二区| 久久精品国内一区二区三区水蜜桃| 91精品精品| 麻豆国产一区| 色8久久久久| 99视频一区| 日本色综合中文字幕| 日韩高清成人| 欧美激情在线精品一区二区三区| 亚洲日本国产| 日本精品久久| 日本久久二区| 日本一区二区三区中文字幕| 精品精品99| 激情婷婷久久| 日韩精品成人在线观看| 欧美精品不卡| 在线观看免费一区二区| av在线日韩| 欧美精品自拍| 中文字幕系列一区| 日韩不卡视频在线观看| 日本vs亚洲vs韩国一区三区二区| 成人午夜精品| 麻豆精品视频在线观看免费| 视频一区二区中文字幕| 精品一区二区三区的国产在线观看| 亚洲精品在线二区| 夜夜嗨网站十八久久| 国产农村妇女精品一二区| 免费国产亚洲视频| 欧美一区精品| 国产精品久久久久久久久免费高清| 亚洲深夜福利在线观看| 精品视频一二| 蜜桃久久av一区| 国产精品一区三区在线观看| 成人三级高清视频在线看| 欧美1区2区3区| 日韩精品一区二区三区av | 91精品国产经典在线观看| 岛国精品一区| 亚洲视频综合| 国产日本久久| 三级在线看中文字幕完整版| 亚洲精一区二区三区| 国产精成人品2018| 国产精品av一区二区| 国产精品igao视频网网址不卡日韩| 麻豆精品视频在线观看视频| 不卡在线一区二区| 久久美女性网| 国产毛片精品| 精品久久久网| 91久久视频| 国产欧美日本| 欧美~级网站不卡| 久久99视频| 99pao成人国产永久免费视频 | 欧美中文字幕一区二区| 日本va欧美va精品| 欧美日韩第一| 99日韩精品| 久久亚洲在线| 久久av在线| 国产欧美视频在线| 精品国产亚洲一区二区三区在线| 欧美激情日韩| 久久午夜视频| 国产一区二区三区国产精品| 性色一区二区| 亚洲v在线看| 日韩在线网址| 亚洲美女久久精品| 国产欧美日韩精品高清二区综合区| 日韩在线精品| 国产精品久久久久久久久久妞妞 | 欧美日韩亚洲一区| 亚洲午夜免费| 91精品国产调教在线观看| 涩涩涩久久久成人精品| 美日韩精品视频| 久久国产电影| 国产aⅴ精品一区二区四区| 日韩av三区| 先锋影音国产一区| 99久久久久| 亚洲国内精品| 国产精品毛片久久| 免费在线日韩av| 国产精品久久| 日本特黄久久久高潮| 视频一区在线播放| 黄色网一区二区| 四季av一区二区凹凸精品| 日韩一区二区三区免费视频| 亚洲成人二区| 91精品一区国产高清在线gif| 黄在线观看免费网站ktv| 日韩精品导航| 最新亚洲国产| 尤物在线精品| 久久亚洲欧美| 亚洲自啪免费| 免费观看日韩电影| 蜜桃视频在线观看一区二区| 亚洲在线电影| 亚洲九九精品| 日本aⅴ免费视频一区二区三区| 奇米色欧美一区二区三区| 久久午夜精品| 日韩国产一二三区| 国产精品免费99久久久| 美女久久99| 亚洲人成在线网站| 激情自拍一区| 日本 国产 欧美色综合| 亚州av日韩av| 欧美激情一区| 欧美日韩在线观看首页| 亚洲高清毛片| 亚洲影视一区| 国产精品视频一区视频二区| 精品视频99| 日韩高清欧美| 五月天久久网站| 热久久免费视频| 欧美一区91| 国产精品xx| 伊人久久大香线蕉av超碰演员| 日韩中文av| 久久一区欧美| 在线日韩电影| 亚洲1区在线观看| 精品成av人一区二区三区| 日本免费久久| 性色一区二区| 久久这里只有| 婷婷激情图片久久| 97成人超碰| 国产精品中文字幕制服诱惑| 国产一区二区三区四区五区传媒| 久久亚洲国产| 久久精品xxxxx| 中文字幕人成乱码在线观看| 国产一区白浆| 国产精品hd| 激情综合自拍| 国产日韩亚洲| 免费av一区| 国产精品久久久久久久久久齐齐| 91精品韩国| 91嫩草精品| 99精品在线| 国产色99精品9i| 亚洲小说欧美另类婷婷| 深夜日韩欧美| 日产精品一区| 日本色综合中文字幕| 色婷婷精品视频| 久久精品97| 在线视频精品| 国际精品欧美精品| 日韩精选在线| 午夜欧美精品| 国产不卡av一区二区| 免费看黄色91| 欧美aa在线观看|