《ECMAScript6入门》读书笔记(三)

wshunli
2017-11-09 / 0 评论 / 84 阅读 / 正在检测是否收录...

《ECMAScript6入门》读书笔记

这部分学习 ES6 中新增的数据类型。

第10章 Symbol

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。

let s = Symbol();
typeof s // "symbol"
// 字符串参数
let s1 = Symbol('foo');
s1.toString() // "Symbol(foo)"
// 对象参数-调用 toString 方法
const obj = {
  toString() {
    return 'abc';
  }
};
const sym = Symbol(obj);
sym // Symbol(abc)

Symbol 值不能与其他类型的值进行运算;可显式转为字符串或布尔值,但不能转为数值。

let sym = Symbol('My symbol');
"your symbol is " + sym // TypeError: can't convert symbol to string
// 字符串
String(sym) // 'Symbol(My symbol)'
sym.toString() // 'Symbol(My symbol)'
// 布尔值
let sym = Symbol();
Boolean(sym) // true
!sym  // false

作为属性名的 Symbol

Symbol 值唯一,能保证对象不会出现同名的属性。

let mySymbol = Symbol();
// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';
// 第二种写法
let a = {
  [mySymbol]: 'Hello!'
};
// 第三种写法
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
// 以上写法都得到同样结果
console.log(a[mySymbol]); // "Hello!"

第11章 Set 和 Map 数据结构

第12章 Proxy

第13章 Reflect

第14章 Promise 对象

第15章 Iterator 和 for...of 循环

未完待续。。

0

评论 (0)

取消