一区二区三区中文国产亚洲_另类视频区第一页_日韩精品免费视频_女人免费视频_国产综合精品久久亚洲

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 前端技巧-JS元編程ES6 symbol公開(kāi)符號(hào)

前端技巧-JS元編程ES6 symbol公開(kāi)符號(hào)

來(lái)源:千鋒教育
發(fā)布人:小千
時(shí)間: 2021-06-30 09:06:00 1625015160

      元編程就是指以操作目標(biāo)為程序本身的行為特性的編程,而在ES6中增加了類(lèi)型symbol,除了自定義的符號(hào)之外,還預(yù)定義了其他的一些內(nèi)置符號(hào),可以被稱(chēng)為內(nèi)置符號(hào)。下面就來(lái)給大家介紹一下這些內(nèi)置符號(hào)。

      1. Symbol.iterator

      這個(gè)符號(hào)表示任意對(duì)象上的一個(gè)專(zhuān)門(mén)的屬性,語(yǔ)言機(jī)制會(huì)自動(dòng)的在這個(gè)屬性上尋找一個(gè)方法,這個(gè)方法會(huì)構(gòu)造一個(gè)迭代器來(lái)消耗這個(gè)對(duì)象的值。… 展開(kāi)和 for…of 循環(huán)會(huì)自動(dòng)使用它。

      我們也可以通過(guò)自定義 Symbol.iterator 屬性為任意對(duì)象值定義自己的迭代器邏輯,它將覆蓋默認(rèn)的迭代器。我們相當(dāng)于是定義了一種元編程的行為,提供給JavaScript其他部分(也就是運(yùn)算符和循環(huán)結(jié)構(gòu))在處理定義的對(duì)象時(shí)使用。

<a href=web前端培訓(xùn)1" />

      2. Symbol.toStringTag 與 Symbol.hasInstance

      在日常邏輯中經(jīng)常出現(xiàn)的一個(gè)場(chǎng)景,判斷一個(gè)值是什么類(lèi)型,通常使用的是 toString() 和 instanceof 。

web前端培訓(xùn)2

      現(xiàn)在 ES6 中,可以定義這些操作的行為特性了。

web前端培訓(xùn)3

      通過(guò)以上案例我們可以看出:

      toStringTag 符號(hào)指定了在 [object XXXX] 字符串化時(shí)使用的字符串值。

      hasInstance 符號(hào)是在構(gòu)造器函數(shù)上的一個(gè)方法,接受實(shí)例對(duì)象值,通過(guò)返回 true 或者 false 來(lái)顯示這個(gè)值是否可以被認(rèn)為是一個(gè)實(shí)例。

      在 Function.prototype 上 hasInstance 默認(rèn)的 writable 是 false,不可寫(xiě)入??梢酝ㄟ^(guò) Object.defineProperty() 來(lái)繞開(kāi)它。

      3. Symbol.species

      這個(gè)符號(hào)控制要生成新的實(shí)例時(shí),類(lèi)的內(nèi)置方法使用哪一個(gè)構(gòu)造器。 內(nèi)置原生構(gòu)造器 Symbol.species 的默認(rèn)行為是 return this 。 如果要定義生成新的實(shí)例的方法,使用new this.constructorSymbol.species ,然后繼承的類(lèi)就可以根據(jù)它來(lái)控制由哪個(gè)構(gòu)造器來(lái)產(chǎn)生這些實(shí)例。

web前端培訓(xùn)4

      4. Symbol.toPrimitive

      在ES6之前,對(duì)象為了某個(gè)操作(例如相加 + 或比較 == )必須強(qiáng)制轉(zhuǎn)換為原生類(lèi)型時(shí),是無(wú)法控制該行為的 ,現(xiàn)在可以通過(guò)Symbol.toPrimitive這個(gè)符號(hào)來(lái)控制這個(gè)行為。

web前端培訓(xùn)5

      Symbol.toPrimitive 方法根據(jù)調(diào)用 ToPrimitive 的運(yùn)算期望的類(lèi)型,會(huì)提供一個(gè)類(lèi)型(type) 指定 "string"、"number" 或 "default"。

      以上就是es6 symbol的介紹了,歡迎對(duì)其他前端技術(shù)感興趣的同學(xué)來(lái)到千鋒web前端培訓(xùn)班了解我們的大前端培訓(xùn)課程,全程名師面授確保教學(xué)質(zhì)量,現(xiàn)在咨詢(xún)還有全套免費(fèi)學(xué)習(xí)資料可以領(lǐng)取,趕緊來(lái)了解一下吧。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
MySQL索引為什么能讓查詢(xún)效率提高?

一、MySQL索引為什么能讓查詢(xún)效率提高DB在執(zhí)行一條Sql語(yǔ)句的時(shí)候,默認(rèn)的方式是根據(jù)搜索條件進(jìn)行全表掃描。如果我們對(duì)某一字段增加索引,查詢(xún)時(shí)...詳情>>

2023-10-14 01:38:15
什么是面向云原生系統(tǒng)的智能運(yùn)維?

一、云原生系統(tǒng)概述云原生系統(tǒng)是指在云計(jì)算環(huán)境下構(gòu)建和運(yùn)行的應(yīng)用程序系統(tǒng),具備高可用、彈性擴(kuò)展、靈活部署和自動(dòng)化管理等特點(diǎn)。它采用容器化...詳情>>

2023-10-14 01:25:33
怎么提升excel數(shù)據(jù)表訪(fǎng)問(wèn)運(yùn)算速度?

一、怎么提升excel數(shù)據(jù)表訪(fǎng)問(wèn)運(yùn)算速度目前版本Excel最大列數(shù)為16384,沒(méi)有10w加。運(yùn)算速度和Excel中是否有公式、公式的復(fù)雜度、對(duì)象的對(duì)少、格...詳情>>

2023-10-14 01:22:48
前端html5框架有哪些?

一、BootstrapBootstrap是目前較受歡迎的前端HTML5框架之一。它由Twitter開(kāi)發(fā)并開(kāi)源,提供了一套易于使用的CSS和JavaScript組件,可以用于創(chuàng)建...詳情>>

2023-10-14 00:57:59
哪些平臺(tái)支持Python編程?

一、AnacondaAnaconda是一個(gè)流行的Python發(fā)行版和包管理器,它提供了一個(gè)集成環(huán)境,方便進(jìn)行科學(xué)計(jì)算和數(shù)據(jù)分析。Anaconda附帶了許多常用的Pyth...詳情>>

2023-10-14 00:54:07
快速通道