• Symbol


    let a=1;
    let b=1;
    console.log(a==b); //结果:true

        let x=Symbol('this is x');
    
        console.log(typeof x);   //结果:symbol
        let y=Symbol('y');
        console.log(x==y);   //结果: false
    
    
        //这里 Synbol 前面不能使用 new 操作符。
    
        //防止对象的属性被篡改
    
    
    
     let sz={name:'曹伟',age:19,[Symbol('xh')]:'007'};
            sz['name']='caowei123';
            sz[Symbol('xh')]='009';
    
        console.log(sz);   //结果:Objectage: 19name: "caowei123"Symbol(xh): "007"Symbol(xh): "009"__proto__: Object
       
        console.log(sz.name);              //结果:caowei123
    
    关于数据类型可以参阅javascript引用类型和基本类型详解一章节,
    let sVal = Symbol();
    console.log(typeof sVal)
    

    上面的代码的输出值是'symbol';

    使用Symbol()函数可以创建一个symbol类型值。

    前面不能使用new,否则会报错;因为Symbol是一种值类型数据,这也是很好理解的.Symbol()用作Symbol值的描述,也可以理解为键(key),代码实例如下:

    let s1 = Symbol('脚本之家');
    let s2 = Symbol("2015");
    

    通过键就可以比较方便的区分两个Symbol值。
    键相同的两个Symbol值并不相同:

    let s1 = Symbol("脚本之家");
    let s2 = Symbol("脚本之家");
    console.log(s1 == s2);
    

    上面两个Symbol值是不相等的。
    Symbol值不能够被隐式转换为字符串类型,代码实例如下:

    let s = Symbol("脚本之家");
    //报错
    `antzone ${sym}`
    //报错
    "antzone" + sym
  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业02
    macwingIDE python3.5 配置
    JAVA必会算法插入排序
    java匿名内部类的另一个用途
    JAVA必会算法选择排序
    Mac elasticsearch 5.2.2 单机双节点配置
    JAVA必会算法二分查找法
    AOP 事物连接,记忆连接数据库,连接池
    线程的意义与一些常见面试问题
  • 原文地址:https://www.cnblogs.com/GJcaowei/p/7162370.html
Copyright © 2020-2023  润新知