• symbol访问法及symbor注册表


    symbol主要作用是防止对象属性名冲突

    在ES6之前,对象的属性名只能是字符串,这样很容易造成字符串的冲突。

    例:假设person对象是从外部库引入的一个对象

    let person = {
       name: 'xiaoqian',
       age : 18    
    }
    console.log(person.name);// xiaoqian
    person.name = 'xiaojia';
    console.log(person.name);// xiaojia

    在不同的代码共享一个symbol,可使用symbo. for()方法来创建一个共享的symbo。

    ES6提供了一个可随时访问的全局symbol注册表。当使用symbol.for()方法注册一个symbol的时候,系统会首先在全局表里查找对应的参数的symbol是否存在,如果存在 ,直接返回已有的symbol,如果不存在,则在全局表里面创建一个新的symbol。

    例:

    let obj = {};
    let name = symbol.for('test');
    obj[name] = 'xiaoqian';
    let name 2 = symbol.for('test');
    console.log(obj[name2]);// xiaoqian

    注意:即使使用symbol.for()方法创建symbol时没有传递任何参数,也会将undefined作为全局表里面的键来进行注册。

    例:

    let obj = {};
    let name = symbol.for();
    obj[name] = 'xiaoqian';
    let name 2 = symbol.for(undefined);
    console.log(obj[name2]);// xiaoqian

    后续有时间再补充创建symbol及symbol.keyfor()方法等~~

  • 相关阅读:
    python搭建开发环境
    django初探
    linux下安装Composer
    文件记录追加 file_put_content
    自定义导出表格
    异步处理接口 fsockopen
    appcache checking update
    js pix
    Event Aggregator
    ko list and css gradient
  • 原文地址:https://www.cnblogs.com/smuwgeg/p/9696862.html
Copyright © 2020-2023  润新知