在ES6及以后的版本中,定義了一系列內(nèi)置的 Symbol 值贮勃,這些值用于提供對(duì)象的內(nèi)置特性。以下是一些常用的內(nèi)置 Symbol 值:
Symbol.hasInstance:
一個(gè)構(gòu)造函數(shù)的 Symbol.hasInstance 方法會(huì)被 instanceof 運(yùn)算符調(diào)用苏章,以確定一個(gè)構(gòu)造函數(shù)是否有給定的原型對(duì)象作為其實(shí)例寂嘉。
Symbol.isConcatSpreadable:
一個(gè)對(duì)象的 Symbol.isConcatSpreadable 屬性會(huì)告訴 Array.prototype.concat() 方法是否可以將該對(duì)象展開為數(shù)組元素。
Symbol.iterator:
一個(gè)對(duì)象的 Symbol.iterator 屬性會(huì)提供一個(gè)迭代器枫绅,用于迭代對(duì)象中的元素泉孩。這是實(shí)現(xiàn)可迭代協(xié)議的關(guān)鍵。
Symbol.match:
一個(gè)對(duì)象的 Symbol.match 方法會(huì)被 String.prototype.match() 方法調(diào)用并淋,用于確定一個(gè)字符串是否匹配一個(gè)正則表達(dá)式棵譬。
Symbol.replace:
一個(gè)對(duì)象的 Symbol.replace 方法會(huì)被 String.prototype.replace() 方法調(diào)用,用于替換字符串中匹配的模式预伺。
Symbol.search:
一個(gè)對(duì)象的 Symbol.search 方法會(huì)被 String.prototype.search() 方法調(diào)用订咸,用于在字符串中搜索一個(gè)模式曼尊。
Symbol.split:
一個(gè)對(duì)象的 Symbol.split 方法會(huì)被 String.prototype.split() 方法調(diào)用,用于將字符串分割成子字符串?dāng)?shù)組脏嚷。
Symbol.species:
一個(gè)構(gòu)造函數(shù)的 Symbol.species 屬性會(huì)返回一個(gè)新構(gòu)造函數(shù)骆撇,用于創(chuàng)建派生對(duì)象。
Symbol.toPrimitive:
一個(gè)對(duì)象的 Symbol.toPrimitive 方法會(huì)被 ToPrimitive 抽象操作調(diào)用父叙,用于將對(duì)象轉(zhuǎn)換為一個(gè)原始值神郊。
Symbol.toStringTag:
一個(gè)對(duì)象的 Symbol.toStringTag 屬性會(huì)提供一個(gè)默認(rèn)字符串描述,用于 Object.prototype.toString() 方法趾唱。
Symbol.unscopables:
一個(gè)對(duì)象的 Symbol.unscopables 屬性包含了一個(gè)對(duì)象涌乳,其屬性指定了哪些屬性應(yīng)當(dāng)被排除在 with 語(yǔ)句的作用域之外。
這些內(nèi)置 Symbol 值為 JavaScript 的內(nèi)置操作提供了標(biāo)準(zhǔn)化的屬性和方法甜癞,使得開發(fā)者可以更精確地控制對(duì)象的行為夕晓。使用這些 Symbol 值,開發(fā)者可以確保他們的代碼與 JavaScript 引擎的內(nèi)置行為保持一致悠咱。