基本数据类型 Symbol
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的更多相关文章
- ES6 新增基本数据类型Symbol
ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. l ...
- ES6 之 第七种数据类型Symbol
概述 为了减少对象的属性名冲突,ES6引入新的原始数据类型Symbol,JS的第七种数据类型. Symbol 能够保证每个属性的名字都是独一无二,这样就能从根本上防止属性名冲突. Symbol 值能够 ...
- 面试官:JavaScript 原始数据类型 Symbol 有什么用?
以前提到 JavaScript 原始数据类型时,我们知道有Number,String,Null,Boolean,Undefined这几种.ES6 引入了新的基本数据类型Symbol和BigInt.今天 ...
- ES6新增数据类型Symbol
Symbol的含义? ES6(2015) 引入了第七种原始数据类型Symbol,Symbol英文文意思为 符号.象征.标记.记号,在 js 中更确切的翻译应该为独一无二的 Symbol的使用? Sym ...
- ES6中的新数据类型——Symbol
今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol.在es5中原始数据类型(基本数据类型)有以下六种:Undefind.Null.Bool. String.Number.Object.今 ...
- 【面试题】JS第七种数据类型Symbol详解
JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...
- es6学习笔记--新数据类型Symbol
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...
- ES6的新增数据类型:Symbol
简介:Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,function,Number,string) Symbol值通过Symbol函数生 ...
- JavaScript数据类型 - Symbol
ES5:对象的属性名只能是字符串,当给对象添加新属性时,很容易造成属性名冲突,从而覆盖了原有的属性. ES6:所以ES6中引入了symbol数据类型,他表示独一无二的值,避免了属性名的冲突,此时对象的 ...
随机推荐
- [Luogu2664]树上游戏
题面戳我 sol 点分.我们面临的最主要一个问题,就是如何在\(O(n)\)的时间内算出所有LCA为根的点对的贡献,还要分别累加到它们自己的答案中去. \(num_i\):每一种颜色的数量.你可以认为 ...
- Invalid bound statement (not found)解决方法
项目背景:SSM框架,MySQL数据库 报错情况: 错误原因:Mybatis的xml文件中,namespace路径错误!!引入的不是对应的Dao接口!!! Dao接口和对应的xml文件 必须一一对应! ...
- Django入门-通用视图
文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...
- gulp详细入门
gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览器自 ...
- k60引脚图
/*! 枚举管脚编号 */ typedef enum { /* PTA端口 */ //0~31 PTA0, PTA1, PTA2, PTA3, PTA4, PTA5, PTA6, PTA7, PTA8 ...
- Unity 读取资源(图片)
方法一: 采用Resource.Load方法读取,读取在Unity中Assets下Resources目录下的资源名(不采用后缀). //图片放在Asset/Resources/ Texture2D t ...
- 设计模式——工厂方法模式(C++实现)
#include <iostream> #include <string> using namespace std; class CProduct { public: ; }; ...
- VMware Workstation 学习笔记
1. 什么是虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.可以运行在一个完全隔离环境中的完整计算机系统. 2. 虚拟机的用途:测试软件.搭建某种特定需求的环境 ...
- Java设计模式(四)Builder建造者模式
一.场景描述 建造者模式同工厂模式.抽象工厂模式一样,用于创建继承类对象. 工厂模式:http://www.cnblogs.com/mahongbiao/p/8618970.html 抽象工厂模式:h ...
- 原生js写的flybird小游戏
游戏地址:http://zangzhihong.jusukeji.com/flybird/index.html html部分 <!DOCTYPE html> <!-- This ...