成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用知名Symbol黑掉JavaScript(5種方法)

開(kāi)發(fā) 前端
從循環(huán)到分割再到搜索,知名符號(hào)讓我們可以重新定義我們的核心功能,使它們以獨(dú)特和令人愉快的方式運(yùn)行,推動(dòng)了JavaScript可能性的邊界。

他們稱(chēng)之為知名符號(hào) — 盡管大多數(shù)開(kāi)發(fā)者從未使用過(guò)它們,甚至從未聽(tīng)說(shuō)過(guò)它們。

這是一個(gè)非常酷的功能,你可以用它來(lái)實(shí)現(xiàn)這樣的魔法:

你將看到我們?nèi)绾问褂弥?Symbol 構(gòu)建這些類(lèi)來(lái)實(shí)現(xiàn)這一點(diǎn)。

它們?nèi)际顷P(guān)于完全定制內(nèi)置操作(如for..of)的正常行為。這就像C++和C#中的運(yùn)算符重載。

它們也都是Symbol類(lèi)的靜態(tài)方法。

1. Symbol.hasInstance

首先我們有Symbol.hasInstance:用于輕松改變instanceof運(yùn)算符的行為。

通常,instanceof用于檢查一個(gè)變量是否是某個(gè)類(lèi)的實(shí)例。

就像它應(yīng)該的那樣;相當(dāng)標(biāo)準(zhǔn)的東西。

但是使用Symbol.hasInstance,我們可以完全改變instanceof的工作方式:

現(xiàn)在就instanceof而言,一個(gè)Person不再是Person了。

如果我們不想完全覆蓋它,而是以一種直觀的方式擴(kuò)展它呢?

我們不能在 Symbol 內(nèi)部使用instanceof,因?yàn)槟菚?huì)很快導(dǎo)致無(wú)限遞歸:

class Person {
  static [Symbol.hasInstance](instance) {
    return instance instanceof Person; // 無(wú)限遞歸!
  }
}

相反,我們將對(duì)象的特殊constructor屬性與我們自己的進(jìn)行比較:

如果你剛剛聽(tīng)說(shuō).constructor,這應(yīng)該解釋一切:

2. Symbol.iterator

我們的下一個(gè)黑客技巧是Symbol.iterator,用于完全改變循環(huán)如何以及是否在對(duì)象上工作。

還記得這個(gè)嗎:

我們通過(guò)Symbol.iterator實(shí)現(xiàn)了這一點(diǎn):

我們?cè)俅慰吹缴善鞒霈F(xiàn)。

每當(dāng)我們使用for..of時(shí)。

這在幕后發(fā)生:

因此,通過(guò)Symbol.iterator,我們完全改變了for..of對(duì)任何List對(duì)象的操作:

3. Symbol.toPrimitive

使用Symbol.toPrimitive,我們可以快速?gòu)倪@個(gè):

變成這個(gè):

我們通過(guò)覆蓋Symbol.toPrimitive實(shí)現(xiàn)了這一點(diǎn):

現(xiàn)在我們可以在任何使用字符串進(jìn)行插值和連接的地方使用Person對(duì)象:

甚至還有一個(gè)hint參數(shù),可以使對(duì)象表現(xiàn)得像number、string或其他東西。

4. Symbol.split

天才的知名 Symbol,用于將你的自定義對(duì)象轉(zhuǎn)換為字符串分隔符:

5. Symbol.search

就像Symbol.split一樣,將你的自定義對(duì)象轉(zhuǎn)換為復(fù)雜的字符串搜索工具:

最后的思考

從循環(huán)到分割再到搜索,知名符號(hào)讓我們可以重新定義我們的核心功能,使它們以獨(dú)特和令人愉快的方式運(yùn)行,推動(dòng)了JavaScript可能性的邊界。

責(zé)任編輯:姜華 來(lái)源: 大遷世界
相關(guān)推薦

2018-05-23 12:24:03

2010-01-18 10:01:56

2017-10-20 09:04:54

數(shù)據(jù)中心方法綠化

2013-01-07 10:44:00

JavaScriptjQueryJS

2020-09-01 09:56:26

云端云計(jì)算云服務(wù)

2020-05-28 13:33:30

React Hook前端開(kāi)發(fā)

2018-11-01 10:10:35

網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)威脅

2017-02-16 13:33:54

2022-09-02 14:29:01

JavaScrip數(shù)組屬性

2015-04-27 13:54:10

2015-05-11 10:16:20

2015-04-16 10:43:03

2012-03-27 10:08:08

JavaScript

2021-02-25 10:46:21

云計(jì)算云服務(wù)器云安全

2019-08-22 07:24:25

2025-06-03 08:33:53

2021-09-18 23:15:31

微信功能檢測(cè)

2020-01-16 18:33:24

安全數(shù)據(jù)網(wǎng)絡(luò)

2010-08-27 10:30:16

CSS垂直居中

2020-07-06 14:00:01

Pandas連接參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品欧美一区二区三区 | 国产精品视频观看 | 97精品超碰一区二区三区 | 91av导航| 在线一区视频 | 国产精品片aa在线观看 | 色吊丝2 | 国产片侵犯亲女视频播放 | 91在线观 | 欧美成人一区二免费视频软件 | 一本岛道一二三不卡区 | 久久99蜜桃综合影院免费观看 | 久久极品| 国产黄色大片在线免费观看 | 精品亚洲一区二区三区四区五区高 | 国产精品成人在线播放 | 欧美日韩精品国产 | 久久国产精品视频 | 91亚洲国产亚洲国产 | 亚洲精品一区中文字幕乱码 | 久久久久久综合 | 亚洲国产精品一区在线观看 | 看av网 | 国产精品欧美一区二区三区不卡 | 国产欧美一区二区三区在线看 | 午夜精品91 | 亚洲成人三级 | 国产人免费人成免费视频 | 美女视频久久 | 男人的天堂视频网站 | av午夜激情| 国产欧美日韩一区 | 亚洲中国字幕 | 天堂一区二区三区 | 欧洲精品视频一区 | 一级做a爰片性色毛片视频停止 | 成人欧美一区二区三区在线观看 | 亚州精品天堂中文字幕 | www.日日夜夜 | 久久精品视频免费看 | 欧美日韩综合 |