前端技巧-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的介紹了,希望能幫到大家。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2779009/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [譯]ES6 中的超程式設計:第一部分 —— Symbol,了不起的 Symbol程式設計Symbol
- 少年,你渴望超程式設計的力量嗎?——symbol程式設計Symbol
- JavaScript—ES6 超程式設計(5)JavaScript程式設計
- 【JavaScript】常用設計模式及程式設計技巧(ES6描述)JavaScript設計模式程式設計
- [譯]7個ES6程式設計小技巧程式設計
- es6 symbolSymbol
- 好程式設計師Web前端教程分享JavaScript開發技巧程式設計師Web前端JavaScript
- ES6之symbolSymbol
- 前端js面向切面程式設計(AOP)前端JS程式設計
- 技術公眾號「程式設計一生」程式設計
- Nodejs微信公眾號開發NodeJS
- ES6 - symbol&generatorSymbol
- 深入解析 ES6:SymbolSymbol
- ES6 symbol 以及symbol的簡單應用Symbol
- 好程式設計師web前端教程分享CSS技巧!程式設計師Web前端CSS
- 程式設計師談薪技巧公開,這樣談比預期高30%程式設計師
- 優秀程式設計技術公眾號推薦程式設計
- 值得程式設計師和設計師關注的微信公眾號程式設計師
- ES6 Symbol 使用場景Symbol
- 【深入淺出ES6】SymbolSymbol
- ES6 新特性之SymbolSymbol
- 關於 HTTP post 請求 form data 裡的特殊符號,比如加號 plus symbolHTTPORM符號Symbol
- js DSL超程式設計簡單介紹JS程式設計
- 簡單總結es6箭頭符號符號
- 條件編譯符號與公佈編譯符號
- IDEA出現Cannot resolve symbol “xxx”(無法解析符號)IdeaSymbol符號
- Java程式設計技巧Java程式設計
- perl程式設計技巧程式設計
- 【前端】微信公眾號推薦前端
- 前端js除錯技巧前端JS除錯
- 微信公號DIY:MongoDB 簡易ORM & 公號記賬資料庫設計MongoDBORM資料庫
- 微信公眾號開發Django JSSDK授權DjangoJS
- 如何在Mac上快速輸入特殊符號?Mac快速輸入特殊符號小技巧Mac符號
- ES6 中的 Symbol 是什麼?Symbol
- ES6 Symbol之淺入解讀?Symbol
- JS 中的 SymbolJSSymbol
- 7個Web前端程式設計師必須會用CSS技巧Web前端程式設計師CSS
- 好程式設計師web前端教程分享HTML5面試技巧程式設計師Web前端HTML面試