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

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

開發 前端
從循環到分割再到搜索,知名符號讓我們可以重新定義我們的核心功能,使它們以獨特和令人愉快的方式運行,推動了JavaScript可能性的邊界。

他們稱之為知名符號 — 盡管大多數開發者從未使用過它們,甚至從未聽說過它們。

這是一個非常酷的功能,你可以用它來實現這樣的魔法:

你將看到我們如何使用知名 Symbol 構建這些類來實現這一點。

它們全都是關于完全定制內置操作(如for..of)的正常行為。這就像C++和C#中的運算符重載。

它們也都是Symbol類的靜態方法。

1. Symbol.hasInstance

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

通常,instanceof用于檢查一個變量是否是某個類的實例。

就像它應該的那樣;相當標準的東西。

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

現在就instanceof而言,一個Person不再是Person了。

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

我們不能在 Symbol 內部使用instanceof,因為那會很快導致無限遞歸:

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

相反,我們將對象的特殊constructor屬性與我們自己的進行比較:

如果你剛剛聽說.constructor,這應該解釋一切:

2. Symbol.iterator

我們的下一個黑客技巧是Symbol.iterator,用于完全改變循環如何以及是否在對象上工作。

還記得這個嗎:

我們通過Symbol.iterator實現了這一點:

我們再次看到生成器出現。

每當我們使用for..of時。

這在幕后發生:

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

3. Symbol.toPrimitive

使用Symbol.toPrimitive,我們可以快速從這個:

變成這個:

我們通過覆蓋Symbol.toPrimitive實現了這一點:

現在我們可以在任何使用字符串進行插值和連接的地方使用Person對象:

甚至還有一個hint參數,可以使對象表現得像number、string或其他東西。

4. Symbol.split

天才的知名 Symbol,用于將你的自定義對象轉換為字符串分隔符:

5. Symbol.search

就像Symbol.split一樣,將你的自定義對象轉換為復雜的字符串搜索工具:

最后的思考

從循環到分割再到搜索,知名符號讓我們可以重新定義我們的核心功能,使它們以獨特和令人愉快的方式運行,推動了JavaScript可能性的邊界。

責任編輯:姜華 來源: 大遷世界
相關推薦

2018-05-23 12:24:03

2010-01-18 10:01:56

2017-10-20 09:04:54

數據中心方法綠化

2013-01-07 10:44:00

JavaScriptjQueryJS

2020-09-01 09:56:26

云端云計算云服務

2020-05-28 13:33:30

React Hook前端開發

2018-11-01 10:10:35

網絡安全網絡攻擊網絡威脅

2017-02-16 13:33:54

2015-04-27 13:54:10

2022-09-02 14:29:01

JavaScrip數組屬性

2015-05-11 10:16:20

2021-02-25 10:46:21

云計算云服務器云安全

2019-08-22 07:24:25

2015-04-16 10:43:03

2021-09-18 23:15:31

微信功能檢測

2012-03-27 10:08:08

JavaScript

2025-06-03 08:33:53

2020-01-16 18:33:24

安全數據網絡

2010-08-27 10:30:16

CSS垂直居中

2020-07-06 14:00:01

Pandas連接參數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久亚洲调教 | 午夜私人影院在线观看 | 欧美 日韩 在线播放 | 中文字幕一区二区三区精彩视频 | 日韩视频在线观看中文字幕 | 国产精品99久久久久久人 | 国产不卡视频 | 久久精品无码一区二区三区 | 久久伊人久久 | 免费观看av网站 | 欧美日韩在线一区二区 | 久久午夜视频 | 欧美三级视频在线观看 | 国产精品久久久久久妇女 | 一区二区高清在线观看 | 久色一区| 新超碰97 | 狠狠爱一区二区三区 | 久草久 | 亚洲一av | 91中文| 欧美 日韩 亚洲91麻豆精品 | 一区二区三区精品在线视频 | 亚洲精品久久久 | 91精品国产色综合久久不卡98口 | 国产精品不卡一区 | 亚洲精品免费观看 | 久久久精品 | 一本一道久久a久久精品综合蜜臀 | 欧美激情视频一区二区三区免费 | 中文字幕色站 | 日本精品一区二区三区视频 | 欧美xxxx日本 | av色站| av在线一区二区三区 | 婷婷在线视频 | 欧美性猛片aaaaaaa做受 | 久久久精品一区 | 亚洲黄色网址视频 | 国产精品一区久久久 | 久久久精彩视频 |