日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端技巧-JS元编程ES6 symbol公开符号

發布時間:2024/9/30 HTML 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端技巧-JS元编程ES6 symbol公开符号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

元編程就是指以操作目標為程序本身的行為特性的編程,而在ES6中增加了類型symbol,除了自定義的符號之外,還預定義了其他的一些內置符號,可以被稱為內置符號。下面就來給大家介紹一下這些內置符號。

1、Symbol.iterator

這個符號表示任意對象上的一個專門的屬性,語言機制會自動的在這個屬性上尋找一個方法,這個方法會構造一個迭代器來消耗這個對象的值?!?展開和 for…of 循環會自動使用它。

我們也可以通過自定義 Symbol.iterator 屬性為任意對象值定義自己的迭代器邏輯,它將覆蓋默認的迭代器。我們相當于是定義了一種元編程的行為,提供給JavaScript其他部分(也就是運算符和循環結構)在處理定義的對象時使用。

2、Symbol.toStringTag 與 Symbol.hasInstance

在日常邏輯中經常出現的一個場景,判斷一個值是什么類型,通常使用的是 toString() 和 instanceof 。

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

通過以上案例我們可以看出:

toStringTag 符號指定了在 [object XXXX] 字符串化時使用的字符串值。

hasInstance 符號是在構造器函數上的一個方法,接受實例對象值,通過返回 true 或者 false 來顯示這個值是否可以被認為是一個實例。

在 Function.prototype 上 hasInstance 默認的 writable 是 false,不可寫入。可以通過 Object.defineProperty() 來繞開它。

3、Symbol.species

這個符號控制要生成新的實例時,類的內置方法使用哪一個構造器。 內置原生構造器 Symbol.species 的默認行為是 return this 。 如果要定義生成新的實例的方法,使用new this.constructorSymbol.species ,然后繼承的類就可以根據它來控制由哪個構造器來產生這些實例。

4、Symbol.toPrimitive

在ES6之前,對象為了某個操作(例如相加 + 或比較 == )必須強制轉換為原生類型時,是無法控制該行為的 ,現在可以通過Symbol.toPrimitive這個符號來控制這個行為。

Symbol.toPrimitive 方法根據調用 ToPrimitive 的運算期望的類型,會提供一個類型(type) 指定 “string”、“number” 或 “default”。

以上就是es6 symbol的介紹了,希望能幫到大家。

本文來自千鋒教育,轉載請注明出處。

總結

以上是生活随笔為你收集整理的前端技巧-JS元编程ES6 symbol公开符号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。