ES6 规范之前, JavaScript 一共有六种数据类型,分别是五种基本数据类
型: string 、 number , boolean , null , undefined ,和一种引用数据类
型: object 。
在 ES6 中,新增了一种基本数据类型 Symbol ,用来表示独一无二的值。
var s1 = Symbol();
var s2 = Symbol();
console.log(s1 === s2) ;
注意: Symbol 函数的参数只是表示当前 Symbol 值的描述,相同参数的 Symbol 函数依然是不同
的。
Symbol() 方法每次调用都会返回一个新的属性值。有时我们想要反复使用同一个 Symbol 值,就可以
通过 Symbol.for() 方法来创建。该方法接收一个字符串为参数。

Symbol.for() 的生成规则是:
首先在全局环境中查找有没有使用某个字符串注册的 Symbol 值,如果有的话就会返回找到的那个值,如
果没有的话就会重新创建一个。这样做的目的使我们可以重复使用之前就定义过的 Symbol 值,或者修改
与之相关的一些东西。
Symbol() 与 Symbol.for() 比较:
Symbol() 与 Symbol.for() 都会产生 Symbol 值,前者每次都产生新的 Symbol 值,不管有没有
参数,后者在创建 Symbol 值之前,会在全局环境中搜索注册的 Symbol 值,如果不存在才会创建新的。

Symbol.keyFor() 方法用来返回 Symbol 值的注册信息。
这个方法需要和 Symbol.for() 配合使用,如果你是使用 Symbol() 函数创建的 Symbol 值,不论你
传不传递参数,通过 Symbol.keyFor() 函数是查找不到它的注册信息的。

注意: Symbol 值作为对象属性名时,不能用点运算符。
Symbol 类型还可以用于定义一组常量,保证这组常量的值都是不相等的。

Object.getOwnPropertySymbols() 方法返回一个数组,成员是当前对象的所有用作属性名
的 Symbol 值。

基本数据类型 Symbol的更多相关文章

  1. ES6 新增基本数据类型Symbol

    ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. l ...

  2. ES6 之 第七种数据类型Symbol

    概述 为了减少对象的属性名冲突,ES6引入新的原始数据类型Symbol,JS的第七种数据类型. Symbol 能够保证每个属性的名字都是独一无二,这样就能从根本上防止属性名冲突. Symbol 值能够 ...

  3. 面试官:JavaScript 原始数据类型 Symbol 有什么用?

    以前提到 JavaScript 原始数据类型时,我们知道有Number,String,Null,Boolean,Undefined这几种.ES6 引入了新的基本数据类型Symbol和BigInt.今天 ...

  4. ES6新增数据类型Symbol

    Symbol的含义? ES6(2015) 引入了第七种原始数据类型Symbol,Symbol英文文意思为 符号.象征.标记.记号,在 js 中更确切的翻译应该为独一无二的 Symbol的使用? Sym ...

  5. ES6中的新数据类型——Symbol

    今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol.在es5中原始数据类型(基本数据类型)有以下六种:Undefind.Null.Bool. String.Number.Object.今 ...

  6. 【面试题】JS第七种数据类型Symbol详解

    JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...

  7. es6学习笔记--新数据类型Symbol

    学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...

  8. ES6的新增数据类型:Symbol

    简介:Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,function,Number,string) Symbol值通过Symbol函数生 ...

  9. JavaScript数据类型 - Symbol

    ES5:对象的属性名只能是字符串,当给对象添加新属性时,很容易造成属性名冲突,从而覆盖了原有的属性. ES6:所以ES6中引入了symbol数据类型,他表示独一无二的值,避免了属性名的冲突,此时对象的 ...

随机推荐

  1. NOIP提高组 2013货车运输

    觉得题目水的离开 不屑的大佬请离开 不会图论的请离开 ……. 感谢您贡献的访问量 ————————————华丽的分割线———————————— 题面: 题目描述 A 国有 n 座城市,编号从 1 到 ...

  2. LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)

    题面 没有权限号的可以去LOJ Sol 大家都知道,\(LCT\)上有许多实边和虚边 实边就是每棵\(Splay\)上的既认父亲又认儿子的边 虚边就是\(Splay\)和\(Splay\)之间只认父亲 ...

  3. BZOJ第7页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1600   BZOJ1601   BZOJ1602   BZOJ1603   BZOJ1604   BZOJ1605   ...

  4. 46个Linux面试常见问题送给你

    问题一: 绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案:绝对路径: 如/etc/init.d当前目录和上层目录: ./  ../主目录: ~/切 ...

  5. Red Hat Enterprise Linux7 配置Tomcat

    笔者是Java前端的一个萌新,电脑刚刚经历了一番脱胎换骨,然后重新装了Win10Pro,所有的开发工具都要重新安装,纠结了一番以后决定还是把一些开发工具从Windows上转移到Linux上,首先考虑了 ...

  6. 设计模式——抽象工厂模式(C++实现)

    #include <iostream> #include <string> using namespace std; class STAbstractProductA { pu ...

  7. Symbol(第6种基本数据类型)

    构造函数 不能使用构造函数,只能当成平常的方法使用 new Symbol()//VM372:1 Uncaught TypeError: Symbol is not a constructor 参数:不 ...

  8. 1-3 Spring Bean 的属性值设置

    详见http://www.cnblogs.com/chenssy/archive/2013/03/17/2964593.html 1.注入普通的属性值 <bean id="Cat&qu ...

  9. Maven-03: 优化依赖

    已解析依赖: Maven会自动解析项目的直接依赖和传递性依赖,并且根据规则正确判断每个依赖的范围,对于一些依赖冲突,也能进行调节,以确保任何一个构件只有唯一的版本在依赖中存在.在这些工作之后,最后得到 ...

  10. 基于hi-nginx的web开发(python篇)——使用jinja2模板引擎

    模板引擎的使用在web开发中是不可避免和必要的.hi.py框架使用jinja2作为模板引擎. 为了使用hi.py提供的jinja2引擎,首先需要引入它: from hi import hi,templ ...