zoukankan      html  css  js  c++  java
  • 读书笔记:深入理解ES6 (六)

    第6章 Symbol 和 Symbol属性

    第1节 创建 Symbol

      1.1 Symbol 指的是ES6中的私有属性

      1.2 创建语法:

    1 let firstName = Symbol();
    2 let person = {};
    3 
    4 person[firstName] = "zxx";
    5 console.log(person[firstName]); //"zxx"

    第2节 Symbol的使用方法

      所有使用可计算属性名的地方,都可以使用Symbol。举例:

     1 let firstName = Symbol("first name");
     2 
     3 //使用一个可计算对象字面量属性
     4 let person = {
     5     [firstName]: "zxx"
     6 };
     7 
     8 //将属性设置为只读
     9 Object.defineProperty(person, firstName, {writable: false});
    10 
    11 console.log( person[firstName] ); // "zxx"

    第3节 Symbol 共享体系

       3.1 为什么要创建Symbol共享体系?

        有时候我们可能希望在不同的代码中共享同一个Symbol,在ES6中提供了一个可以随时访问的全局Symbol注册表,它是一个类似于全局作用域的共享环境。如果要创建一个可以共享的Symbol,那么要使用Symbol.for()方法。它只接受要给参数,也就是即将创建的Symbol的字符串的标识符。举例:

    1 let uid = Symbol.for("uid");
    2 let object = {};
    3 Object[uid] = "12345";
    4 
    5 console.log( Object[uid] ); //"12345"
    6 console.log( uid ); //  "Symbol(uid)"

    第4节 Symbol与类型强制转换

      在JavaScript中,没有与Symbol逻辑等价的值,因而Symbol使用起来不是很灵活,尤其是不能将Symbol强制转换为字符串和数字类型。

    第5节 Symbol属性检索

      在ES6中,添加了 Object.getOwnPropertySymbols() 方法,该方法返回一个包含所有Symbol自有属性的数组。举例:

    1 let uid = Symbol.for("uid");
    2 let object = {
    3     [uid]: "12345"
    4 };
    5 let symbols = Object.getOwnPropertySymbols(object);
    6 
    7 console.log( symbols.length ); // 1
    8 console.log( symbols[0] ); // "Symbols(uid)"
    9 console.log( object[symbols[0]] ); // "12345"

    第6节 通过well-known Symbol暴露其内部操作

      6.1 ES6中,延伸了ES5中“将JS中的一些‘神奇’的部分暴露出来,并相近定义了这些开发者们在当时模拟不了的功能”,在新标准中,主要通过在原型链上定义与Symbol相关的属性来暴露更多的语言内部逻辑。

      6.2 具体的一些方法类似于API,用到的时候可以查书 p.113 - p.127。

    (本节完)

  • 相关阅读:
    识别浏览器信息,判断是否安卓或者苹果手机
    thinkphp5.0 配置文件加载路径说明
    thinkphp5.0 url跳转
    微信小程序--picker
    JavaScript和php数组的定义
    地点下来框的实现(php)
    微信小程序入门(持续更新)
    Vue 拖拽组件 vuedraggable 和 vue-dragging
    递归
    js 为什么有些在原始数据上进行修改,有些进行浅拷贝或深拷贝呢
  • 原文地址:https://www.cnblogs.com/zxxsteven/p/11473957.html
Copyright © 2011-2022 走看看