zoukankan      html  css  js  c++  java
  • ES6 symbol

    symbol是es6新增的基本类型 跟string一级,它的功能类似于一种标识唯一性的ID;

    symbol可以被typeof识别 类型就为symbol;

    例子:

    let s2 = Symbol('another symbol')

    关注点:同样的字符串或者数字用symbol处理后 ==和===两边是不相等的

    let s1 = Symbol()
    let s2 = Symbol('another symbol')
    let s3 = Symbol('another symbol')
    
    s1 === s2 // false
    s2 === s3 // false

    应用场景:属性,方法私有化:当你不想暴露给外界一些key值的时候 只用于内部的时候  可以使用此方式

    let obj = {
       [Symbol('name')]: '一斤代码',
       age: 18,
       title: 'Engineer'
    }
    
    Object.keys(obj)   // ['age', 'title']
    
    for (let p in obj) {
       console.log(p)   // 分别会输出:'age' 和 'title'
    }
    
    Object.getOwnPropertyNames(obj)   // ['age', 'title']

    应用场景:当使用JSON.stringify()将对象转换成JSON字符串的时候,Symbol属性也会被排除在输出内容之外:

    JSON.stringify(obj)  // {"age":18,"title":"Engineer"}

    如何提取symbol

    // 创建一个 symbol 并放入 Symbol 注册表,key 为 "foo"
    var globalSym = Symbol.for("foo"); 
    Symbol.keyFor(globalSym); // "foo"
    
    // 创建一个 symbol,但不放入 symbol 注册表中
    var localSym = Symbol(); 
    Symbol.keyFor(localSym); // undefined,所以是找不到 key 的
  • 相关阅读:
    solr 使用
    深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
    深入理解java虚拟机(一)
    获取请求体数据 POST
    获取请求头数据
    Servlet之Request和Response 解析
    Servlet 之 Http协议
    Servlet 体系结构
    如何修改servlet的创建时机?
    Java Web servlet 详解
  • 原文地址:https://www.cnblogs.com/web-chuan/p/11592158.html
Copyright © 2011-2022 走看看