ES6 新增数据类型Symbol

今天更两篇,嘿嘿
ES6 新增数据类型Symbol
想到什么就更什么,随缘更新大法。
这次讲一下ES6的新增数据类型Symbol,以前我们是五大基本数据类型,字符串(String)、数字(Number)、布尔值(Boolean)、未定义(Undefined)、对空(Null),现在成员喜加一。
ES6 新增数据类型Symbol
Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值,最大的用法是用来定义对象的唯一属性名,那我们就试一试嘛。

Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。可以接受一个字符串作为参数,为新创建的 Symbol提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分。

上面那句话可要记好了,圈起来,要考。

		let str = Symbol('abc')
        console.log(str);

此时此刻,代码看着很正常,没有报错,那我们看看控制台。
ES6 新增数据类型Symbol
注意了,他打印的并不只是abc,上面说过

可以接受一个字符串作为参数,为新创建的 Symbol 提供描述

那么我们的abc其实就是个描述并不是它的值,接下来我们验证一下他的唯一性。

		let str1 = Symbol('abc')
        console.log(str1);
        console.log(str===str1);

我们写一个同样描述的Symbol,将两个进行一个判断
ES6 新增数据类型Symbol
可以看到,显示的内容我们看着是一样的,但是我们两个Symbol相比之后返回的是一个false,
这边也验证出了他的唯一性,接下来我们根据上面说到的它的最大用法去写个小例子看一看。

		
		var str = Symbol('a1')
        var obj = {
      		// 使用变量去定义属性名需用[]包起来
            [str]:'111',
            a2:'222'
        }

那么,我们想拿到222很简单,使用.直接获取obj.a2
ES6 新增数据类型Symbol
那我们拿111该怎么拿,它的属性名是个变量obj.str肯定不行,想想我们forin循环,obj[str]可以拿到。
ES6 新增数据类型Symbol
那我们都能写obj[str],我们能写obj[Symbol(‘a1’)]吗,当然~~
ES6 新增数据类型Symbol
不行!
上面我们说过了,Symbol(‘abc’)不等于Symbol(‘abc’),也就是描述一样,两个数据也不相等,那就是即使你写两遍,自己也不会等于自己,虽然 [] 里的 Symbol(‘a1’) 看着一样,但它们始终是不相等的,所以找不到,想要找到他,只能使用被赋值的那个变量。

所以,你学会了吗
ES6 新增数据类型Symbol

上一篇:ES6 (1)


下一篇:ES6 你是懂了,可你真的会用了吗?(这10点,检验你是否中招了)