ES6-07:Symbol数据类型

ES5中规定JavaScript有6种数据类型:Undefined、Null、String、Boolean、Number、Object;ES6新增加一种数据类型Symbol.

1.symbol定义

  • 原始数据类型:不是对象,不能使用new命令创建,不能添加属性;
  • 表示独一无二的值:
Symbol()===Symbol();//false
Symbol(‘foo‘)===Symbol(‘foo‘);//false
Symbol.for(‘bar‘)===Symbol(‘bar‘);//true
  • symbol值作为属性名时,该属性是公开属性,非私有;
  • symbol作为属性时,不可被遍历;

2. 作用

  • 消除魔术字符串:消除代码内部强耦合;
  • 模块的单利模式:任何时候都返回同一个实例;
    var CAT_KEY=Symbol.for(‘cat‘);
    function Cat(){};
    if(!global[CAT_KEY]){global[CAT_KEY]=new Cat()};

3.内置Symbol值——11个

  • Symbol.hasInstance
  • Symbol.isConcatSpreadable

    -Symbol.species

  • Symbol.match
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • Symbol.iterator
  • Symbol.toPrimitive
  • Symbol.toStringTag
  • Symbol.unscopable

原文地址:https://www.cnblogs.com/hbzyin/p/8111770.html

时间: 2024-10-24 14:59:41

ES6-07:Symbol数据类型的相关文章

ES6——Symbol数据类型

什么是 Symbol ? Symbol 表示独一无二的值,他是js中的 第七种数据类型. 基本的数据类型:null, undefined number boolean string symbol 引用数据类型:Object let s1=Symbol(); let s2= Symbol(); console.log(typeof s1); //symbol console.log(s1===s2) //false; Symbol 函数不能使用 new 否则会把错,因为 Symbol 是一个原始类

ES6-----学习系列九(Symbol数据类型)

Symbol是es6新的数据类型. Symbol所声明的值是唯一的,独一无二的.永远不可能相等.Symbol.for(key) 先检查是否声明了key值  如果未声明就相当于调用Symbol  如果已经声明了 就相当于获取这个Symbol { // 声明 let a1=Symbol(); let a2=Symbol(); console.log(a1===a2);//false let a3=Symbol.for('a3'); let a4=Symbol.for('a3'); console.l

es6的Symbol

ES6中引入了一种新的数据类型:Symbol,可以作为对象属性的标识符使用 ES6引入Symbol的原因:防止属性名的冲突(ES5的对象属性名都是字符串,容易造成属性名的冲突) Symbol函数前不能使用new命令,否则会报错 Symbol值不能与其他类型的值进行运算 Symbol函数可以接受一个字符串作为参数(可选),表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分 在js文件中定义的Symbol,不能在其他文件中共享 每个Symbol实例都是唯一的.因

ES6随笔--各数据类型的扩展(2)--数值

ES6随笔--各数据类型的扩展(2)--数值 二进制和八进制表示 二进制0b(或0B)表示:八进制0o(或0O)表示: 这两种字符串转换成十进制数值,使用Number()方法: Number('0b111') // 7 Number.isFinite(), Number.isNaN(); Number.isFinite()的参数如果不是数值,一律返回false, Infinity/-Infinity/NaN都返回false: Number.isNaN()对不是NaN的参数一律返回false; 这

ES6随笔--各数据类型的扩展(3)--函数

ES6随笔--各数据类型的扩展(3)--函数 1. 函数参数的默认值 可以在函数参数中指定默认值,函数内不能再用let或const声明: 使用参数默认值时,不能出现同名参数: 参数默认值惰性求值,每次调用函数会重新计算参数默认值表达式: let x = 99; function foo(p = x + 1) { console.log(p); } foo() // 100 x = 100; foo() // 101 可以与解构赋值默认值结合使用: function ({x, y = 5} = {

ES6随笔--各数据类型的扩展(1) --字符串和正则

ES6随笔--基本数据类型的扩展 字符串 Unicode表示法 \uxxxx表示的Unicode如果码数超过了0xFFFF的范围,只要放进大括号内就能识别: codePointAt() 用codePointAt()可以准确识别码数超出0xFFFF范围的Unicode字符: for...of循环能够正确识别32位的UTF-16字符: String.fromCodePoint() 与codePointAt()作用刚好相反:根据传入的Unicede码数返回对应的字符: 遍历 for...of循环可以循

ES6 新增基本数据类型Symbol

ES6 增加了一个新的基本数据类型 symbol. 不过,和其他基本数据类型相比,它有点与众不同,因为它没有字面量的表现形式,而且创建的方式也有点奇怪,只能通过调用全局函数Symbol()来完成. let firstSymbol = Symbol(); 这里注意一点,Symbol函数调用的时候,前面不要加new. 创建了一个symbol, 它有什么作用呢? 可以把它看作一个类字符串,和字符串的使用方式一致,字符串能用的地方,symbol 基本都能用,最常用的地方就是作为对象的属性名使用,因为,s

es6 之 Symbol 类型

ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object). 符号(symbol)是一种特殊的.不可变的数据类型,可以作为对象属性的标识符使用.生成 Symbol 值的最简单的方式就是直接通过 Symbol 函数生成. let sym = Symbol(); console.log(sym); // Sym

ES6(六) --- Symbol

概述: ES5 中属性名都是字符串,这容易就造成命名的冲突,特别是在混入模式(mixin模式)下.为解决这个问题ES6 引入了Symbol, Symbol是一种新的基本数据类型,表示独一无二的值!  和ES5 中的六种基本数据类型(Undefined,Null,Boolean,String,Number,Object)同级. 简单的来说Symbol 的作用就是为了防止属性方法命名冲突 var s1 = Symbol('rain') var s2 = Symbol('rain') s1==s2 /