<<深入理解ES6>>记:六

第6章 Symbol和Symbol属性

在ES5语言中包含5种原始类型:字符串, 数字, 布尔型, null, undefined
在ES6引入了第6种原始类型: Symbol
虽然通过Symbol可以为属性添加非字符串名称, 但是其隐私性就被打破了.

1.创建Symbol
可以通过typeof来检测变量是否为Symbol类型

let firstName = Symbol('first name');
let person = {};
person[firstName] = 'ylz';
console.log('first name' in person);    // false
console.log(person[firstName]);    // 'ylz'

2.Symbol的使用方法
所有使用可计算属性名的地方, 都可以是使用Symbol.

3.Symbol共享体系
希望在不同的代码中共享同一个Symbol
ES6提供了一个随时可以访问的全局Symbol注册表

let uid = Symbol.for('uid');
let = object = {
    [uid]: '1234'
};
console.log(object[uid]);   // '1234'
let uid2 = Symbol.for('uid');
console.log(uid == uid2);   // true
console.log(object[uid2]);  // '1234' 

4.Symbol属性检索
ES5中:
Object.keys()方法和Object.getOwnPropertyNames()方法可以检索对象中所有的属性名, 但是不支持Symbol属性;
ES6中:
添加了Object.getOwnPropertySymbols()方法的返回值是一个包含Symbol自有属性的数组.

5.通过well-known暴露Symbol内部操作
这些well-known Symbol包括:

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

推荐阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 6,589评论 3 22
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,127评论 8 25
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,170评论 0 3
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,591评论 0 8
  • 1.概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象...
    赵然228阅读 825评论 2 10