ES6学习-6.Symbol和Symbol属性

原始类型:Symbol,用于创建必须通过Symbol才能引用的属性,提供了一些私有性和不易覆盖的特性。

1、创建Symbol

symbol在创建的时候,可以接受一个参数,用来描述这个Symbol的文本字符串。

2、Symbol的使用方法

所有使用可计算属性名的地方,都可以使用Symbol,看以下代码:

3、Symbol共享体系

如果想要创建一个共享的Symbol,就使用Symbol.for()方法,它接受一个参数,用来创建Symbol的字符串标识符。Symbol.for()方法首先在全局Symbol注册部查找是否存在Symbol,存在则直接返回,不存在则创建一个新的。例如一下代码:

4、Symbol与类型强制转换

Symbol不能强制转换成字符串和数字类型。例如一下代码:

5、Symbol属性检索

Object.getOwnPropertySymbols()方法来检索对象中的Symbol属性。例如:

6、通过well-known Symbol暴露内部操作

(1)Symbol.hasInstance  一个在执行instanceof时调用的内部方法,用于检测对象的继承信息。

(2)Symbol.isConcatSpreadable  一个布尔值,用于表示当传递一个集合作为Array.prototype.concat()方法的参数时,是否英爱将集合内的元素规整到同一层级。

(3)Symbol.iterator  一个繁华迭代器的方法。

(4)Symbol.match  一个调用String.prototype.match()方法时调用的方法,用于比较字符串。

(5)Symbol.replace  一个调用String.prototype.replace()方法时调用的方法,用于替换字符串的子串。

(6)Symbol.search  一个调用String.prototype.search()方法时调用的方法,用于在字符串中定位子串。

(7)Symbol.species  用于创建派生对象的构造函数。

(8)Symbol.split  一个在调用String.prototype.split()方法时调用的方法,用于分割字符串。

(9)Symbol.toPrimitive  一个返回对象原始值的方法。

(10)Symbol.toStringTag  一个在调用Object.prototype.toString()方法时使用的字符串,用户创建对象描述。

(11)Symbol.unscopables  一个定义了一些不可被with语句引用的对象属性名称的对象集合。

重写这些方法,可以改变对象内部的默认行为,从而可以实现一些自定义的方法和行为。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加...
    oWSQo阅读 547评论 1 3
  • 前面的话 ES5中包含5种原始类型:字符串、数字、布尔值、null和undefined。ES6引入了第6种原始类型...
    CodeMT阅读 703评论 0 1
  • 回忆一下JS中的原始类型:字符串型、数字型、布尔型、null和undefined。 ES6中引入了第6种原始类型:...
    ___Jing___阅读 8,731评论 2 10
  • 【ES6脚丫系列】Symbol 如果有理解不到位的地方,欢迎大家纠错。如果觉得还可以,希望大家可以点个赞。 谢谢...
    吃码小妖阅读 712评论 0 1
  • 在 ECMAScript 5 及早期版本中,语言包含 5 种原始类型:字符串型、数字型、布尔型、null 和 un...
    独木舟的木阅读 1,622评论 0 1