前端技巧-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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 少年,你渴望超程式設計的力量嗎?——symbol程式設計Symbol
- JavaScript—ES6 超程式設計(5)JavaScript程式設計
- 【JavaScript】常用設計模式及程式設計技巧(ES6描述)JavaScript設計模式程式設計
- [譯]7個ES6程式設計小技巧程式設計
- es6 symbolSymbol
- 好程式設計師Web前端教程分享JavaScript開發技巧程式設計師Web前端JavaScript
- 前端js面向切面程式設計(AOP)前端JS程式設計
- IDEA出現Cannot resolve symbol “xxx”(無法解析符號)IdeaSymbol符號
- ES6之symbolSymbol
- 技術公眾號「程式設計一生」程式設計
- ES6 symbol 以及symbol的簡單應用Symbol
- ES6 - symbol&generatorSymbol
- 好程式設計師web前端教程分享CSS技巧!程式設計師Web前端CSS
- 關於 HTTP post 請求 form data 裡的特殊符號,比如加號 plus symbolHTTPORM符號Symbol
- 程式設計師談薪技巧公開,這樣談比預期高30%程式設計師
- ES6 Symbol 使用場景Symbol
- ES6 新特性之SymbolSymbol
- 【深入淺出ES6】SymbolSymbol
- 簡單總結es6箭頭符號符號
- 前端js除錯技巧前端JS除錯
- JS 中的 SymbolJSSymbol
- 【程式設計小技巧】程式設計
- Java程式設計技巧Java程式設計
- 好程式設計師web前端分享js剪下板Clipboard.js 使用程式設計師Web前端JS
- 好程式設計師web前端教程分享js閉包程式設計師Web前端JS
- 好程式設計師web前端教程分享js模板模式程式設計師Web前端JS模式
- 十年老友記 | @張京:我程式設計了三十年,程式設計就是我的符號程式設計符號
- JS非同步程式設計怎麼回事 如何能學好Web前端開發JS非同步程式設計Web前端
- 如何在Mac上快速輸入特殊符號?Mac快速輸入特殊符號小技巧Mac符號
- 7個Web前端程式設計師必須會用CSS技巧Web前端程式設計師CSS
- 程式設計技巧│提高 Javascript 程式碼效率的技巧程式設計JavaScript
- Node.js非同步程式設計~超級詳細哦Node.js非同步程式設計
- 程式常用的設計技巧
- 好程式設計師web前端教程之Node.Js流程程式設計師Web前端Node.js
- ES6 Symbol之淺入解讀?Symbol
- ES6 中的 Symbol 是什麼?Symbol
- JS程式設計題JS程式設計
- 《Afterlight》:在遊戲設計中結合象徵符號遊戲設計符號