ES6笔记-- Symbol类型

ES6 胡小邦
文章标签: ES6笔记

前言:

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类型的。

有什么不足请同学们提醒一下~

还能输出{{restrictNumber}}个字符  
  • {{reply.author}}

    {{CommonUtil.formateDate(reply.ac_CommentDate).shortTime}}
  • 回复了{{Comments.author}} :