当前位置: 首页 > article >正文

ES6之Symbol

ES6中为我们新增了一个原始数据类型Symbol,让我为大家介绍一下吧!
Symbol它表示是独一无二的值
Symbol要如何创建
第一种创建方式:

    let sy = Symbol()

第二种创建方式:

    let sy = Symbol.for()

具体独一无二在哪呢?它们的地址不相同。

    let sy = Symbol("name")
    let sy1 = Symbol("name")
    console.log(sy === sy1) //false

但如果我们使用Symbol.for创建

    let sy = Symbol.for("name")
    let sy1 = Symbol.for("name")
    console.log(sy === sy1) // true

Symbol不能与其他数据进行运算

    let sy = Symbol()
    console.log(sy + 1) //报错
    console.log(sy > 1) //报错
    console.log(sy + "1") //报错

Symbol可以作用在哪呢?
用来定义对象的私有变量
如何写入对象?
第一种:

    let sy = Symbol("sy1")
    const obj = {}
    obj[sy] = "私有的"
    console.log(obj)

第二种:

    let sy = Symbol("sy1")
    const obj = {
        [sy] : "私有的"
    } 
    console.log(obj)

第三种添加的键值:

    const obj = {
        sy : Symbol("私有的")
    } 
    console.log(obj)

在这里插入图片描述
我们可以用keyFor来获取Symbol.for()创建的值

    let sy = Symbol.for("hello")
    console.log(Symbol.keyFor(sy))//hello

我们怎么获取呢?可以使用 对象[ ]的方法取到
记住取Symbol的值时,不能用点(.)取

//获取成功
console.log(obj[sy]) //私有的

我们用点(.)取值试一下,取到undefined

console.log(obj.sy) //undefined

我们该如何循环取到Symbol
我们用对象的for in方法试一试
由此可见,取不到Symbol

    let sy = Symbol("hello")
    const obj = {
        name:"张三",
        age:18,
        
    }
    obj[sy] = "私有的"
    for(let k in obj) {
        console.log(obj) //{name: '张三', age: 18, Symbol(hello): '私有的'}
        console.log(k) //name age
        console.log(obj[k]) //张三 18
    }

我们使用getOwnPropertySymbols()

    let sy = Symbol("hello")
    const obj = {
        name:"张三",
        age:18    
    }
    obj[sy] = "私有的"
    let a = Object.getOwnPropertySymbols(obj)
    console.log(a)

在这里插入图片描述

感谢大家的阅读,如有不对的地方,可以向我指出,感谢大家!


http://www.kler.cn/a/162519.html

相关文章:

  • 字节、快手、Vidu“打野”升级,AI视频小步快跑
  • adb shell常用命令
  • 使用支付宝沙箱完成商品下单
  • MySQL_第13章_视图
  • Tomcat与Nginx之全面比较
  • 【Threejs】相机控制器动画
  • 雷达点云数据.pcd格式转.bin格式
  • 经典神经网络——ResNet模型论文详解及代码复现
  • 5G承载网和大客户承载的演进
  • CFS三层靶机内网渗透
  • Vue学习计划-Vue2--Vue核心(五)条件、列表渲染、表单数据
  • ChatGPT的常识
  • 【网络协议】聊聊网络ReadTimeout和ConnectTimeout
  • 资深IT经理分享如何选择商用远控软件三:评估产品方案匹配度
  • 《opencv实用探索·十四》VideoCapture播放视频和视像头调用
  • 计算机网络测试题
  • 为什么感染HPV的人越来越多?劲松中西医结合医院专家发表看法
  • 12月8日作业
  • 打造专属小程序,乔拓云模板平台助力商家抢占先机
  • 监控pod 容器外网请求网络带宽,过滤掉内网、基于k8spacket开发
  • java中Lists.newArrayList和new ArrayList的详细区别?
  • 力扣labuladong一刷day30天二叉树
  • 高效的多维空间点索引算法——GeoHash
  • Smart Link和Monitor Link
  • 【STM32入门】3.OLED屏幕
  • Linux系统之部署Plik临时文件上传系统