zoukankan      html  css  js  c++  java
  • ES6 Symbol类型

    es5中对象的属性名是都是字符串,容易造成重名;es6引入Symbol数据类型(已有Number 、 String 、 Boolean 、 Objec t、 null 和 undefined 类型);

    特性:

    // 创建symbol属性值
    
    let sb=Symbol();
    
    console.log(sb);
    
    console.log(typeof(sb))

     

    // 每个定义的symbol都是唯一的
    
    let sb2=Symbol();
    
    console.log(sb==sb2); // 返回false

    Symbol实际使用

    // 定义一个对象
    
    let symbol=Symbol('address'); // 可以加参数 指定属性名
    
    let obj={name:'jack',age:10};
    
    // 假如我们要向对象里额外加个属性
    
    // obj.address='南京路' // 以前的写法,不过假如属性很多的时候,可能会出现属性重复
    
    obj[symbol]='南京路' // 这样能保证属性不重复
    
    console.log(obj)

    因为Symbol具有唯一性,所以我们可以做Symbol定义常量

    const System_key=Symbol('114aaa');
    
    console.log(System_key);

    Symbol.for()

    // Symbol.for() 全局搜索指定key的Symbol,找到的话,就返回该Symbol,找不到,就新建一个
    
    console.log(Symbol("foo") === Symbol("foo"));      // false
    
    console.log(Symbol.for("bar") === Symbol.for("bar"));     // true

    Symbol.keyFor()

    // Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。
    
    let fooKey = Symbol.for("bar1");
    
    console.log(Symbol.keyFor(fooKey)); // 返回bar1
  • 相关阅读:
    Secure your iPhone with 6 digit passcode by upgrading to iOS9
    Threatening letter in Naver Line App
    Android Malware Analysis
    OGG目录清理数据
    RAC配置2个私网网卡使用HAIP服务
    sql调优脚本
    匿名内部类
    权限修饰符
    Android源码目录结构
    luffy项目:基于vue与drf前后台分离项目(1)
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/12963668.html
Copyright © 2011-2022 走看看