Symbol() 学习与使用

Symbol() ,用于获取唯一的属性名避免与其他属性名冲突

      let s1 = Symbol();//可加参数: Symbol('a')进行打印可区分

      let s2 = Symbol();

      console.log('相等?:',s1==s2); //false,无论是否有参数都不相等

Symbole 可以显示的转为字符串,布尔值,但是不能转为数字

Symbole 不可进行运算,例:"aaa"+s1,隐形转成 字符串并拼接,报错

var mySymbol = Symbol();

      //第一种写法

      var a = {};

      a[mySymbol] = "Hello!";

      //第二种写法

      var a = {

        [mySymbol]: "Hellow!",

      };

      //第三种写法

      var a = {};

      Object.defineProperty(a, mySymbol, { value: "Hellow!" });

      //以上写法的结果都相同

      a[mySymbol]; // "Hellow!"

注意:Symbol值作为对象的属性名时不能使用点运算符,同理,在对象的内部使用Symbol值时也必须放在方括号中

//如果s不放在[]中,该属性名就是字符串,而不是Symbol

Symbol还可以定义一组常量,保证这组常量的值都是不相等

常量使用Symbol值最大的好处就是,其他任何值都不可能与之相同

消除魔术字符串

魔术字符串就是指,在代码之中多次出现,与代码形成强耦合的某一个具体的字符串或数字,良好的代码风格应该消除魔术字符串,由含义清晰的变量代替。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加...
    oWSQo阅读 538评论 1 3
  • 1.概述 在ES5之前 数据类型只有六种 是: undefined ,Object, null,Number,St...
    黑云阅读 151评论 0 2
  • 实习的时候写的学习笔记 如有错误请各位大佬直接留言批判,防止错误的信息会误导他人! ---------------...
    ci鱼丸粗面阅读 541评论 0 0
  • 【ES6脚丫系列】Symbol 如果有理解不到位的地方,欢迎大家纠错。如果觉得还可以,希望大家可以点个赞。 谢谢...
    吃码小妖阅读 706评论 0 1
  • 我是程序员小白,每天致力于基础语法的反复学习,并通过自己的总结进行记忆!!! 今天学习:Symbol1、主要作用是...
    喜欢走弯路的人阅读 361评论 0 1