• JavaScript基本数据类型——Symbol


      JavaScript的基本数据类型有:(1)Undefined、(2)Null、(3)Boolean、(4)String、(5)Number、(6)Symbol、(7)Object。ES6 增加了Symbol类型,下面主要是讲Symbol类型的一些相关知识点。

    Symbol的特性

    1、实例是唯一且不可改变的;一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。

    1 let id = Symbol("id");

    2、数据类型的特点:唯一性,即使是用同一个变量生成的值也不相等。

    1 let id1 = Symbol("id");
    2 let id2 = Symbol("id");
    3 console.log(id1 == id2);  //false

    3、数据类型的特点:隐藏性,for···in,object.keys() 不能访问。

    1 let id = Symbol("id");
    2 let obj = {
    3     [id] : 'symbol'          
    4 }
    5 for ( let key in obj){
    6     console.log(obj[key]);  //输出为空
    7 }

    能够访问的方法:Object.getOwnPropertySymbols,会返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。

    1 let id = Symbol("id");
    2 let obj = {
    3   [id] : 'symbol'      
    4 }
    5 let arr = Object.getOwnPropertySymbols(obj);
    6 console.log(arr)  // [Symbol(id)]
    7 console.log(obj[arr[0]]) // 'symbol'

    4、可多次使用同一个symbol值,官方提供了全局注册并登记的方法:Symbol.for()

    let name1 = Symbol.for("name"); // 检测未创建后新建
    let name2 = Symbol.for("name"); // 检测已创建后返回
    console.log(name1 == name2); // true

    通过这种方法就可以通过参数值获取到全局的symbol对象了,反之,可以通过Symbol.keyFor()获取到参数值。

    let name1 = Symbol.for("name");
    let name2 = Symbol.for("name");
    console.log(Symbol.keyFor("name1")); // 'name'
    console.log(Symbol.keyFor("name2")); // 'name'

    5、instanceof 的结果为 false

    let s = Symbol('foo');
    console.log(s instanceof Symbol); // false

    注意:在创建symbol类型数据 时的参数只是作为标识使用,所以 Symbol() 作为参数也是可以的。

     

    参考资料:(1)http://es6.ruanyifeng.com/#docs/symbol

         (2)https://blog.csdn.net/qq_33408245/article/details/82953143

  • 相关阅读:
    配置phpmyadmin使登录时可填写IP管理多台MySQL 连接多个数据库 自动登录
    PHP: 深入pack/unpack 字节序
    QQWry.dat 数据写入
    apache 配置order allow deny讲解
    Linux运行与控制后台进程的方法:nohup, setsid, &, disown, screen
    jQuery事件之on()方法绑定多个选择器,多个事件
    centos安装zendstudio centos系统
    apache常见错误汇总
    apache配置文件
    Linux中如何让命令在后台运行
  • 原文地址:https://www.cnblogs.com/daheiylx/p/11547413.html
Copyright © 2020-2023  润新知