zoukankan      html  css  js  c++  java
  • Symbol

    一、主要用途

      1、感觉Symbol值很鸡肋的话,先去理清 '字符串'、'变量名'、'属性名'之间的关系 ;//变量名就是一个代号  主要是:Symbo值可以代替'字符串'成为属性名

      2、保证每个属性是独一无二的,防止属性名冲突;

      3、是函数Symbol()的返回值;

      4、Symbol值可以显式转为字符串;

      5、Symbol值也可以转为布尔值,但是不能转为数值;

    二、Symbol值的创建和获取

      1、Symbol([symbolName]);

      2、Symbol.for(symbolName);

    • 会被登记在全局环境中供搜索
    • 不会每次调用就返回一个新的Symbol类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值

      3、Symbol.keyFor(symbolName);

    • 返回一个已登记的Symbol类型值的key

    三、作为属性名

      1、不能用"."运算符

      2、在对象的内部,使用Symbol值定义属性时,Symbol值必须放在方括号之中。

      3、Symbol值作为属性名时,该属性还是公开属性,不是私有属性。

    四、消除魔术字符串

      1、魔术字符串:魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。

      2、解决办法:写成对象的属性(命名空间),Symbol值

    五、属性名的遍历

      1、Object.getOwnPropertySymbols方法

      返回一个数组,成员是当前对象的所有用作属性名的Symbol值。

      2、Reflect.ownKeys方法可以返回所有类型的键名,包括常规键名和Symbol键名。

      3、以Symbol值作为名称的属性,不会被常规方法遍历得到。我们可以利用这个特性,为对象定义一些非私有的、但又希望只用于内部的方法。

    六、内置的Symbol值

      11个内置的Symbol值,指向语言内部使用的方法。

    All rights reserved please indicate the source if reprint---吓尿了的大肥鼠
  • 相关阅读:
    学号20145220《信息安全系统设计基础》第10周学习总结
    补发周四的博客。对之前的知识复习了一遍,因为要闭卷考试。
    jsp中文乱码
    redis做成windows服务
    poi导出excel打开文件时部分内容有问题
    mysql删除数据表时:Cannot delete or update a parent row: a foreign key constraint fails
    Oracle使用foreach批量操作数据
    Oracle数据库clob类型转String类型
    MAVEN配置多个仓库
    idea中maven项目明明有jar包还是爆红
  • 原文地址:https://www.cnblogs.com/realsoul/p/5540194.html
Copyright © 2011-2022 走看看