Symbol
Symbol是ES6中新增的一种数据类型,它是一种独一无二的值,可以用来创建对象的唯一标识符,它的特点是:
- 1、Symbol的值是不可变的,不能被改变,所以可以用来创建唯一标识符;
- 2、Symbol的值不能被枚举,不能被for...in循环;
- 3、Symbol的值不能被Object.keys()或Object.getOwnPropertyNames()获取。
Symbol的使用方法
Symbol的使用方法有两种:
- 1、使用Symbol()函数创建Symbol值:
let sym = Symbol();
这种方法创建的Symbol值没有描述,可以使用第二种方法添加描述; - 2、使用Symbol函数的参数创建Symbol值:
let sym = Symbol('description');
这种方法创建的Symbol值有描述,可以使用String()函数获取描述:console.log(String(sym)) // 'description'
Symbol值可以用来创建对象的唯一标识符,用法如下:
let obj = { [sym]: 'value' }; console.log(obj[sym]); // 'value'
Symbol值也可以用来定义对象的属性名,用法如下:
let obj = {}; Object.defineProperty(obj, sym, { value: 'value' }); console.log(obj[sym]); // 'value'
Symbol还可以用来定义对象的方法名,用法如下:
let obj = { [sym]() { console.log('method'); } }; obj[sym](); // 'method'
Symbol还可以用来定义全局变量,用法如下:
let sym = Symbol.for('globalSymbol'); console.log(Symbol.keyFor(sym)); // 'globalSymbol'
以上就是Symbol的使用方法,Symbol可以用来创建对象的唯一标识符,也可以用来定义对象的属性名、方法名,以及定义全局变量,使用起来非常方便。