ES6學(xué)習(xí)-6.Symbol和Symbol屬性

原始類型:Symbol,用于創(chuàng)建必須通過(guò)Symbol才能引用的屬性,提供了一些私有性和不易覆蓋的特性。

1、創(chuàng)建Symbol

symbol在創(chuàng)建的時(shí)候,可以接受一個(gè)參數(shù),用來(lái)描述這個(gè)Symbol的文本字符串。

2、Symbol的使用方法

所有使用可計(jì)算屬性名的地方,都可以使用Symbol,看以下代碼:

3、Symbol共享體系

如果想要?jiǎng)?chuàng)建一個(gè)共享的Symbol,就使用Symbol.for()方法,它接受一個(gè)參數(shù),用來(lái)創(chuàng)建Symbol的字符串標(biāo)識(shí)符。Symbol.for()方法首先在全局Symbol注冊(cè)部查找是否存在Symbol,存在則直接返回,不存在則創(chuàng)建一個(gè)新的。例如一下代碼:

4、Symbol與類型強(qiáng)制轉(zhuǎn)換

Symbol不能強(qiáng)制轉(zhuǎn)換成字符串和數(shù)字類型。例如一下代碼:

5、Symbol屬性檢索

Object.getOwnPropertySymbols()方法來(lái)檢索對(duì)象中的Symbol屬性。例如:

6、通過(guò)well-known Symbol暴露內(nèi)部操作

(1)Symbol.hasInstance ?一個(gè)在執(zhí)行instanceof時(shí)調(diào)用的內(nèi)部方法,用于檢測(cè)對(duì)象的繼承信息。

(2)Symbol.isConcatSpreadable ?一個(gè)布爾值,用于表示當(dāng)傳遞一個(gè)集合作為Array.prototype.concat()方法的參數(shù)時(shí),是否英愛(ài)將集合內(nèi)的元素規(guī)整到同一層級(jí)。

(3)Symbol.iterator ?一個(gè)繁華迭代器的方法。

(4)Symbol.match ?一個(gè)調(diào)用String.prototype.match()方法時(shí)調(diào)用的方法,用于比較字符串。

(5)Symbol.replace ?一個(gè)調(diào)用String.prototype.replace()方法時(shí)調(diào)用的方法,用于替換字符串的子串。

(6)Symbol.search ?一個(gè)調(diào)用String.prototype.search()方法時(shí)調(diào)用的方法,用于在字符串中定位子串。

(7)Symbol.species ?用于創(chuàng)建派生對(duì)象的構(gòu)造函數(shù)。

(8)Symbol.split ?一個(gè)在調(diào)用String.prototype.split()方法時(shí)調(diào)用的方法,用于分割字符串。

(9)Symbol.toPrimitive ?一個(gè)返回對(duì)象原始值的方法。

(10)Symbol.toStringTag ?一個(gè)在調(diào)用Object.prototype.toString()方法時(shí)使用的字符串,用戶創(chuàng)建對(duì)象描述。

(11)Symbol.unscopables ?一個(gè)定義了一些不可被with語(yǔ)句引用的對(duì)象屬性名稱的對(duì)象集合。

重寫這些方法,可以改變對(duì)象內(nèi)部的默認(rèn)行為,從而可以實(shí)現(xiàn)一些自定義的方法和行為。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 ES5的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。比如,你使用了一個(gè)他人提供的對(duì)象,但又想為這個(gè)對(duì)象添加...
    oWSQo閱讀 590評(píng)論 1 3
  • 前面的話 ES5中包含5種原始類型:字符串、數(shù)字、布爾值、null和undefined。ES6引入了第6種原始類型...
    CodeMT閱讀 732評(píng)論 0 1
  • 回憶一下JS中的原始類型:字符串型、數(shù)字型、布爾型、null和undefined。 ES6中引入了第6種原始類型:...
    ___Jing___閱讀 8,807評(píng)論 2 10
  • 【ES6腳丫系列】Symbol 如果有理解不到位的地方,歡迎大家糾錯(cuò)。如果覺(jué)得還可以,希望大家可以點(diǎn)個(gè)贊。 謝謝...
    吃碼小妖閱讀 762評(píng)論 0 1
  • 在 ECMAScript 5 及早期版本中,語(yǔ)言包含 5 種原始類型:字符串型、數(shù)字型、布爾型、null 和 un...
    獨(dú)木舟的木閱讀 1,731評(píng)論 0 1

友情鏈接更多精彩內(nèi)容