前言:
Symbol是什么?意思是标志、记号,它可以用来做记号。
它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值。
一、简单使用
1. 声明
类似字符串String的声明方式 var str = 'str'; Symbol的声明方式类似,它调用构造函数Symbol()
var s = Symbol();
typeof s // symbol
2. 使用
Symbol声明了是为了使用
var s = Symbol();
var s1 = Symbol();
console.log(s, s1);
console.log(s == s1); // false
symbol除了简单的在控制台输出之外,还可以参与到其他代码逻辑运算中去,最常见的是在对象属性名称中
var s = Symbol();
var s1 = Symbol('s1');
var obj = {
[s]: function() {
console.log(1);
},
[Symbol()]: () => {
console.log(2);
},
[s1]: 3
};
obj[s]() // 1
obj[s1] // 3
注意到symbol要使用[]中括号包裹起来,调用的时候也一样(不能使用obj.s的方式,这样会被识别成字符串)
3. 类型转换
数字转换成字符串我们可以简单的使用 + '' 实现
var s = Symbol();
var s1 = Symbol('s1');
s + '' // Uncaught TypeError: Cannot convert a Symbol value to a string
出错了,提示不能转换。
实际上,我们只是不能直接转换值,还是可以用toString或String方法转换这个标志的
var s = Symbol();
var s1 = Symbol('s1');
s.toString() // Symbol()
String(s1) // Symbol(s1)
类似的,也可以转换为bool值
var s = Symbol();
var s1 = Symbol('s1');
!!s // true
!s // false
Boolean(s1) // true
不过,symbol是不能转换成数值Number类型的。
有什么不足请同学们提醒一下~