首页 > 其他分享 >ES6-Symbol数据类型

ES6-Symbol数据类型

时间:2023-02-01 10:05:22浏览次数:42  
标签:ES6 键名 对象 Symbol 数据类型 字符串 可以 属性


Symbol

简介

Symbol表示独一无二的值,它是JavaScript语言的第七种数据类型。

Symbol值通过Symbol函数生成。对象的属性名现在可以有两种类型,一种是字符串,一种就是新增的Symbol类型(类似于字符串的数据类型,符号类型值),这样可以保证不会与其他属性名产生冲突。

 

Symbol函数可以接收一个字符串作为参数,表示对Symbol实例的描述,这样在控制台打印的时候,比较容易区分。

 

如果Symbol的参数是一个对象,就会调用对象的toString()方法,将其转为字符串,然后才生成一个Symbol值。

 

注意;

1.     Symbol函数的参数只是表示对当前Symbol值的描述,所以参数相同时,它们的返回值是不相等的。

2.     Symbol值不能与其他类型的值进行运算,会报错,但是它可以显示转为字符串,可以进行字符串拼接。

 

3.     Symbol值可以转为布尔值,但不能转为数值

Symbol.prototype.description

创建Symbol的时候,可以添加一个描述

 

以上代码中,sym的描述就是字符串foo,但是读取这个描述的时候需要将Symbol显式转为字符串,ES2019提供了description,它可以直接返回Symbol的描述

 

作为属性名的Symbol

由于每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,这样可以保证不会出现同名的属性,能防止某一个键被改写或者覆盖。

 

注意:Symbol值作为对象属性名时,不能用点运算符,只能通过obj【 symbol 】的形式,设置对象属性的时候同理。

属性名的遍历

Symbol作为属性名,遍历对象的时候,该属性不会出现在for in, for of循环中,也不会被Object.keys()、Object.getOwnPrototypeNames()、JSON.stringfy()返回。

它可以通过Object.getOwnPropertySymbols()方法获取指定对对象的所有Symbols属性名,该方法返回一个数组,成员是当前对象的所有作为属性名的Symbol值。

或者通过使用Reflect.ownKeys()方法返回所有类型的键名,包括常规键名和Symbol键名

由于Symbol值作为键名,不会被常规方法遍历得到,可以利用这个特性,为对象定义一些非私有的,但又希望只用于内部的方法。

标签:ES6,键名,对象,Symbol,数据类型,字符串,可以,属性
From: https://blog.51cto.com/u_14389461/6030670

相关文章

  • mysql数据类型
    整形 定点数注意ALTERTABLEdemonoMODIFYsalayDECIMAL(15,3)--12位整数,3位小数小数超出的部分四舍五入,正数超出的部分报错时间类型 ......
  • LATEX Mathematical Symbols(Rice University)
    来自于莱斯大学(RiceUniversity)发布的《LATEXMathematicalSymbols》......
  • Java变量和数据类型
    变量是一个内存位置的名称。java中有三种类型的变量:局部变量,实例变量和静态变量。java中有两种类型的数据类型:原始数据类型和非原始数据类型。变量变量是在内存中分......
  • 16引用数据类型
    packagechapter02;publicclassJava04_Operator{publicstaticvoidmain(String[]args){//TODO引用数据类型//所谓的引用数据类型,就是可以被......
  • 数据类型
    常识(一个字节byte-->8bit)标准c语言允许以‘f’/‘F’来表示浮点数,例如356f和356.是等价的常量(不能被改变)/变量(可以被改变)#define常量名字常量(数值)-->定义一个宏常......
  • 15数据类型的转换
    packagechapter02;publicclassJava03_Datatype_02{publicstaticvoidmain(String[]args){//TODO数据类型的转换Stringname="zhangsan";......
  • 基本数据类型
    packagechapter02;publicclassJava03_Datatype_02{publicstaticvoidmain(String[]args){Stringname="zhangsan";//TODO基本数据类型......
  • MySQL------数据类型重点关注
    整数类型整数类型字节有符号数取值范围无符号数取值范围TINYINT1-128~1270~255SMALLINT2-32768~327670~65535MEDIUMINT3-8388608~......
  • redis基本数据类型 Hash
    Hash类型Hash类型的常见命令HSETkeyfieldvalue:添加或者修改hash类型key的field的值HGETkeyfield:获取一个hash类型key的field的值HMSET:批量添加多个hash类......
  • 02-数据类型转换和运算符
    一.数据类型转换1.常见的转换函数函数说明int(x[,base])将x转换为一个整数float(x)将x转换为一个浮点数complex(real[,imag])创建一个复数,real为......