精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ES6 中的 Symbol 類型在實際開發中用得多嗎?

開發 前端
JavaScript 中的 Array、Set、Map 數據類型都可被 for...of 所遍歷。如果面試官說:“實現一個可以被 for...of 所遍歷的對象” 這個該怎么實現呢?

知乎上看到的一個問題:“ES6 中的 symbol 類型在實際開發中用得多嗎?”,以前在學習 ES6 時也有此疑問,這個 Symbol 是干嘛的?有什么應用場景?

Symbol 在實際開發中用的不多,在看一些類庫的實現時有看到相關使用,下面分享下關于 Symbol 的幾個使用場景。

做為私有屬性

使用 Symbol 做為私有屬性,最早知道這個是在 Egg 源碼中學習到的,看一段相關的代碼片段:

// https://github.com/eggjs/egg/blob/3.0.0/lib/core/base_context_logger.js#L22
const CALL = Symbol('BaseContextLogger#call');
class BaseContextLogger {
[CALL](method, args) {
// ...
this.ctx.logger[method](...args);
}
}

在 JavaScript 中為了實現私有屬性,之前常用的一種方式是命名規范約定,方法名以 _ 開始。

Symbol 出現之后看到的一個相對較多的場景是用它來模式私有屬性、方法。這對一些 for...in、Object.getOwnPropertyNames() 操作是可以隱藏掉這些屬性,但是 ES6 中的 Symbol 和強類型語言中的 private 相比并不完全是私有的,仍然能通過 Object.getOwnPropertySymbols()、Reflect.ownKeys() 操作枚舉到這些屬性進行訪問。

鉤子函數 - 自定義格式輸出

使用 MongoDB Node.js 驅動程序生成一個 id,當執行 ObjectId()或 new ObjectId() 時總會按照固定格式輸出,如下所示:

new ObjectId("632c6d93d65f74baeb22a2c9")

沒了解實現之前,看起來總歸是有些神秘的,如果自己寫一個類并實現自定義輸出信息該怎么做呢?帶著好奇之心看了下源碼實現:

// https://github.com/mongodb/js-bson/blob/v4.4.0/src/objectid.ts#L343
class ObjectId {
toHexString(): string {
const hexString = this.id.toString('hex');
return hexString;
}

[Symbol.for('nodejs.util.inspect.custom')](): string {
return this.inspect();
}

inspect(): string {
return `new ObjectId("${this.toHexString()}")`;
}
}

Symbol.for(str) 是新建一個以該字符串為名稱的值,并注冊到全局,如果已注冊過,就直接返回。與 Symbol() 區別簡單理解是,Symbol() 調用 100 次會返回 100 個不同 Symbol 值,Symbol.for(str) 調用 100 次返回的 Symbol 值都是相同的。

Node.js util 模塊實現了 util.inspect.custom 方法用于聲明自定義檢查函數,這里個人理解更像一個鉤子函數,在 https://github.com/nodejs/node/issues/20821 PR 中已支持將 util.inspect.custom 做為公共符號,實現了不用加載 util 模塊就可在任何地方使用它,這里用的就是 Symbol.for()。

面試官:實現一個可遍歷對象

JavaScript 中的 Array、Set、Map 數據類型都可被 for...of 所遍歷。如果面試官說:“實現一個可以被 for...of 所遍歷的對象” 這個該怎么實現呢?

Symbol 提供了 Symbol.iterator 方法,該方法返回一個迭代器對象,目前 Array、Set、Map 這些數據結構默認具有 Symbol.iterator 屬性,而對象 Object 是沒有的,如下所示:

console.log([][Symbol.iterator]()); // Object [Array Iterator] {}
console.log((new Map())[Symbol.iterator]()); // [Map Entries] { }
console.log((new Set())[Symbol.iterator]()); // [Set Iterator] { }
console.log({}[Symbol.iterator]); // undefined

Symbol.iterator  是迭代協議標準中的一部分:可迭代器協議,它定義了哪些值可以被遍歷到。要成為可迭代器對象,必須實現 @@iterator 方法,可通過常量 Symbol.iterator 訪問(到這里是不是發現,原來常使用的 Array 類型竟和 Symbol 也有聯系啊

迭代協議標準的另一部分是:迭代器協議 ,它定義了產生一系列值的的標準方式。通過定義 next() 方法實現,這里不做詳細闡述,參見文檔。

了解了  Symbol.iterator 和迭代協議規則實現一個可被遍歷的對象并不難。

const range = {
start: 0,
end: 3,
[Symbol.iterator]: function() { return this },
next: function() {
if (this.start > this.end) {
return { value: undefined, done: true }
}

return { value: this.start++, done: false }
}
}

for (const id of range) {
console.log(id); // 0,1,2,3
}

除了 Symbol.iterator 還有 Symbol.asyncIterator,這個在 Node.js 后端中有一些使用場景。

責任編輯:武曉燕 來源: 編程界
相關推薦

2021-01-27 07:51:41

JSES6元素

2020-03-04 17:38:31

瀏覽器程序員CSS

2020-12-02 06:11:02

JS ES6方法

2022-07-26 09:02:15

ES6ES13ECMAScript

2010-10-20 16:43:11

SQL Server管

2022-06-01 09:06:58

ES6數組函數

2021-08-16 07:05:58

ES6Promise開發語言

2017-08-31 14:25:34

前端JavascriptES6

2020-07-01 07:58:20

ES6JavaScript開發

2018-11-06 10:51:07

Redis開發存儲系統

2020-11-16 08:10:04

ES6迭代器JavaScript

2021-07-30 07:10:07

ES6函數參數

2024-06-26 08:18:08

ES6模板字符串

2023-03-01 15:39:50

JavaScrip對象屬性ES6

2023-05-28 23:49:38

JavaScrip開發

2021-07-16 07:26:48

ES6javascript開發語言

2023-11-23 10:21:11

ECMAScriptJavaScript

2020-10-22 10:55:55

數據結構ES6前端

2017-10-09 18:21:20

JavaScriptES6ES8

2011-08-22 15:47:27

Oracle臨時表存儲過程
點贊
收藏

51CTO技術棧公眾號

国产成人一二三区| 99国产在线| 久久免费手机视频| 日本一区二区中文字幕| 一区av在线播放| 久久国产精品99久久久久久丝袜| 日本中文字幕在线观看视频| 亚洲91精品| 日韩va亚洲va欧洲va国产| 一区二区xxx| 黄色美女视频在线观看| 久久久不卡网国产精品一区| 91精品综合视频| 免费观看一区二区三区毛片| 999国产精品永久免费视频app| 日韩免费电影一区| 男女无套免费视频网站动漫| 欧美videos另类精品| 国产日韩视频一区二区三区| 97免费资源站| 国产精品欧美综合| 亚洲麻豆视频| 久久视频免费在线播放| 9.1成人看片免费版| 日韩08精品| 欧美性生活大片视频| 久久久久99精品成人片| 黄色网址视频在线观看| 久久久综合网站| 国产91精品入口17c| 中国精品一区二区| 久久国产精品毛片| 久久久久久香蕉网| 欧美做爰爽爽爽爽爽爽| 狠狠色丁香婷婷综合影院| 亚洲电影免费观看| 女同性αv亚洲女同志| 男人亚洲天堂| 色乱码一区二区三区88| 国产人妻777人伦精品hd| a免费在线观看| 中文字幕在线不卡视频| 五月天综合网| 国产福利在线| 久久久久久毛片| 久久久久资源| 亚洲色图狠狠干| av中文字幕在线不卡| 亚洲专区中文字幕| a级片在线播放| 精彩视频一区二区| 国产精品午夜视频| 中文字幕日本视频| 久久久久久久尹人综合网亚洲| 韩国精品美女www爽爽爽视频| 黄视频网站免费看| 小小影院久久| 久久综合电影一区| 欧美性x x x| 亚洲国产日韩欧美在线| 精品国产一区二区三区久久久狼 | 国产欧美精品一区| 欧美一区二区福利| 国产午夜精品一区理论片| 久久蜜桃av一区二区天堂| 久久一区二区三区av| 亚洲aaaaaaa| 2024国产精品| 四虎永久国产精品| 欧美成人二区| 亚洲精品日日夜夜| 国产中文字幕乱人伦在线观看| 日韩av官网| 婷婷综合在线观看| 日本熟妇人妻xxxxx| 成人免费黄色| 欧美一区二区三区系列电影| 国产成人精品一区二区三区在线观看| 在线一区二区三区视频| 亚洲精品电影网站| 欧美偷拍一区二区三区| 日韩精品永久网址| 美女福利精品视频| 九九热国产视频| 久久精品男女| 亚洲一区二区三区香蕉| 十八禁一区二区三区| 国产亚洲成av人在线观看导航 | 91福利在线免费观看| 中文字幕资源在线观看| 精品欧美午夜寂寞影院| 在线观看精品国产视频| 久久久久久天堂| 日韩av一区二区三区四区| 97se在线视频| 精品福利视频导航大全| 亚洲精品免费视频| 国内外免费激情视频| 玖玖精品一区| 亚洲人成五月天| 久久久久久久久久综合| 蜜桃视频一区二区三区在线观看| 97人人模人人爽人人喊38tv| 黄视频在线播放| 亚洲国产日韩一级| 日日干夜夜操s8| 欧美一区二区三区红桃小说| 久久精品这里热有精品| 免费污污视频在线观看| 国产中文字幕精品| 免费成人深夜夜行视频| 成人在线观看一区| 亚洲国产精品一区二区www在线| 无码播放一区二区三区| 日本欧美在线| 亚洲精品999| 免费在线观看a级片| 99人久久精品视频最新地址| 国产色综合天天综合网| 人妻91麻豆一区二区三区| 欧美激情一区不卡| 内射国产内射夫妻免费频道| 成人久久精品| 亚洲欧美日韩第一区| h色网站在线观看| 水蜜桃久久夜色精品一区的特点| 亚洲自拍av在线| 成人福利在线| 在线精品视频小说1| 91超薄肉色丝袜交足高跟凉鞋| 欧美日韩激情在线一区二区三区| 欧美激情女人20p| 久久久999久久久| 99久久婷婷国产综合精品电影| 先锋影音一区二区三区| 成人性生活av| 亚洲第一国产精品| 国产精品丝袜一区二区| 奇米在线7777在线精品| 久久久久一区二区三区| 女人天堂av在线播放| 欧洲另类一二三四区| 亚洲国产第一区| 国精品一区二区三区| 91精品啪aⅴ在线观看国产| 亚洲 精品 综合 精品 自拍| 亚洲国产美女搞黄色| 能看毛片的网站| 99久久亚洲精品蜜臀| 国产精品日日摸夜夜添夜夜av| 日本在线一二三| 无吗不卡中文字幕| 成人性生活免费看| 亚洲福利久久| 国产麻豆日韩| 韩国成人免费视频| 欧美不卡视频一区| 欧美人与禽zozzo禽性配| 国产成人午夜99999| 国产免费一区二区三区四在线播放| 欧美亚洲大片| 伊人久久男人天堂| 日本欧美www| 欧美激情一区二区三区蜜桃视频| 天堂…中文在线最新版在线| 亚洲亚洲免费| 欧洲亚洲女同hd| 天天在线女人的天堂视频| 天天色综合成人网| 国产精品无码电影| 欧美在线综合| 亚洲欧美国产精品桃花| 福利一区二区三区视频在线观看| 国产亚洲欧洲高清| 91成品人影院| 亚洲欧美乱综合| 无码人妻丰满熟妇区毛片蜜桃精品| 欧美激情亚洲| 国产三区精品| 美脚恋feet久草欧美| 一区二区三区四区精品| 国产精品视频一二区| 一区二区三区在线免费视频| 日本50路肥熟bbw| 亚洲欧美久久| 日韩免费毛片| 日本电影久久久| 97国产一区二区精品久久呦 | 一本色道久久88亚洲精品综合| 久久国产精品美女| 欧美高清性猛交| 熟妇人妻一区二区三区四区| 亚洲国产视频一区二区| 在线观看福利片| 精品综合久久久久久8888| 欧美少妇一区二区三区| 红杏视频成人| 国产精品久久久久久亚洲调教| 欧美18hd| 亚洲美女av电影| 91久久精品国产91性色69| 尤物av一区二区| 国产精品无码一区二区三区免费| 日韩成人一区二区| 4444在线观看| 日韩理论电影大全| 99久久精品免费看国产四区| 亚洲少妇视频| 久久精品福利视频| 色婷婷综合视频| 欧美日韩免费不卡视频一区二区三区| 激情五月色婷婷| 国产精品久久久久一区| www.美色吧.com| 日韩av电影天堂| 国产玉足脚交久久欧美| 国产成人短视频在线观看| 国产伦精品一区二区三区四区免费 | 亚洲区中文字幕| www.久久精品.com| 欧洲精品一区二区| 日本少妇性生活| 亚洲天堂免费在线观看视频| 免费黄在线观看| 99久久精品99国产精品| 伊人国产精品视频| 欧美亚洲一区| 精品国产一区二区三区无码| 欧美精选视频在线观看| 精品视频一区二区三区四区| 日韩午夜电影免费看| 日本成熟性欧美| 91破解版在线观看| 另类美女黄大片| 麻豆av免费在线观看| 亚洲情综合五月天| 天天av天天翘| 亚洲电影第1页| 国产麻豆91视频| 欧美片在线播放| 午夜精品免费观看| 精品女厕一区二区三区| 麻豆国产尤物av尤物在线观看 | 日韩精品久久久| 开心激情综合| 精品国产乱码久久久久软件| 中文幕av一区二区三区佐山爱| 日韩美女主播视频| 欧亚av在线| 国内外成人免费激情在线视频| 操你啦视频在线| 欧美wwwxxxx| 菠萝蜜视频国产在线播放| 欧美俄罗斯性视频| 国产原创精品视频| 久久精品国产91精品亚洲| av在线之家电影网站| 国产亚洲精品美女久久久| 成人网视频在线观看| 亚洲最大在线视频| 高清在线观看av| 亚洲人精品午夜在线观看| 你懂的在线看| 亚洲女人天堂色在线7777| 免费一级在线观看播放网址| 日韩电影免费观看在线观看| 五月婷婷深深爱| 亚洲精品一区三区三区在线观看| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美日韩久久久久| 国产成人免费观看视频| 欧美日韩在线视频一区| 中文字幕一区二区人妻电影| 欧美日韩一区二区三区在线免费观看| 在线观看免费av片| 91国内精品野花午夜精品| 国产99免费视频| 欧美日韩视频一区二区| 一区二区三区www污污污网站| 欧美区视频在线观看| 国产视频aaa| 精品福利av导航| 亚洲av成人精品日韩在线播放| 亚洲欧美制服丝袜| h片在线观看网站| 久久久久亚洲精品国产| 美女18一级毛片一品久道久久综合| 国产精品久久久久7777婷婷| 豆花视频一区| 日韩videos| 888久久久| 久草视频国产在线| 久久一区亚洲| 不用播放器的免费av| 北条麻妃国产九九精品视频| 成人免费无遮挡无码黄漫视频| 欧美激情一区在线| 欧美日韩在线国产| 91成人在线精品| 国产高清免费观看| 日韩精品极品在线观看播放免费视频| 国产黄在线观看免费观看不卡| 欧美xxxx综合视频| 日韩免费小视频| 97视频中文字幕| 中文字幕亚洲影视| 欧洲精品视频在线| 亚洲三级毛片| 国产chinesehd精品露脸| 91蜜桃视频在线| 成年人av电影| 在线免费观看日韩欧美| 成人午夜免费福利| 成人444kkkk在线观看| 国产精品电影| 91网在线免费观看| 九一精品国产| 欧美日韩dvd| 免费黄网站欧美| 少妇饥渴放荡91麻豆| 亚洲欧美aⅴ...| 成人一级免费视频| 亚洲人成网站999久久久综合| 日本色护士高潮视频在线观看| 国产精品视频久久久| 国产精品qvod| 国产日本欧美在线| 日本伊人午夜精品| 好吊日免费视频| 亚洲一二三专区| 国产伦子伦对白视频| 日韩一级黄色av| 日本欧美不卡| 国产一区在线观| 欧美精品国产| 亚洲精品激情视频| 亚洲男人的天堂av| 特级西西444www高清大视频| 亚洲二区在线播放视频| av在线播放观看| 成人h视频在线观看播放| 欧美最新另类人妖| 干日本少妇首页| kk眼镜猥琐国模调教系列一区二区| 久久国产波多野结衣| 欧美视频在线一区二区三区| www.天堂av.com| 久久久久久久久久久免费| 精品视频在线观看网站| 一区二区在线不卡| 日本欧美加勒比视频| 蜜桃av免费观看| 欧美三级日韩三级| 国产主播福利在线| 国产精品成人国产乱一区| 成人区精品一区二区婷婷| 久久久久人妻精品一区三寸| 91麻豆国产福利在线观看| 国产 日韩 欧美 在线| 亚洲欧美日韩天堂| 亚洲www免费| 日本在线播放不卡| 日日夜夜精品视频天天综合网| 波多野结衣一二三四区| 欧美在线小视频| 日本电影全部在线观看网站视频 | 成人在线精品| 日本国产中文字幕| 成人午夜视频福利| 亚洲 欧美 视频| 亚洲另类欧美自拍| 九九热这里有精品| 中文字幕中文字幕在线中一区高清 | 亚洲精品国产综合久久| 欧美aa在线| 欧美色欧美亚洲另类七区| 九九国产精品视频| 欧美人妻一区二区| 亚洲精品久久久一区二区三区| 色多多在线观看| 欧美亚洲国产免费| 男人的j进女人的j一区| 亚洲人做受高潮| 日韩一级大片在线| 超级碰碰久久| 在线观看精品视频| 国产福利视频一区二区三区| 国产真实夫妇交换视频| 国产一区二区三区网站| 成人黄色免费网站| 毛片在线视频观看| 91丨九色丨蝌蚪丨老版| h片在线免费看| 1769国产精品| 色135综合网| 天天干天天曰天天操| 日韩欧美精品网址| 黄网页在线观看| 国产一区二区中文字幕免费看| 久久爱www久久做|