《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)