zoukankan      html  css  js  c++  java
  • 七种JS数据类型---Symbol

    七种JS数据类型  
     
    六种基本类型:string、number、boolean、null、undefined、symbol(ES6新增)
     一种引用数据类型:boject、array、function
    // 1、symbol函数前不能使用new关键字,否则会报错,这是因为symbol是原始数据类型,而不是对象,所以不能添加属性。
    let s = Symbol();
    typeof s;
    //"symbol"

    //2、 symbol可以接受一个字符串作为参数,表示对Symbol的描述,主要是在控制台显示时容易区分

    //3、 这个参数可以不加,如果不加在控制台输出就是两个Symbol()不利于区分,加上参数就是为了加以区分。

    var s1 = Symbol("foo");
    var s2 = Symbol("bar");
    
    s1 // Symbol("foo")
    s2 // Symbol("bar")
    s1.toString() // "Symbol(foo)"
    s2.toString() // "Symbol(bar)
     
    //4、 Symbol不能与其他值进行运算,否则会报错
    // 5、Symbol是唯一的与谁都不相等
    // 没有参数的情况
    var s1 = Symbol();
    var s2 = Symbol();
    
    s1 == s2 // false
    
    // 有参数的情况
    var s1 = Symbol("foo");
    var s2 = Symbol("foo");
    
    s1 == s2 // false
    // 6、Symbol 可以显示的转为字符串,布尔值,但是不能转为数字,转为数字会报错
    // 7、由于每一个Symbol都不相同,那么可以作为标识符作为对象的属性名,保证不会出现同名的的属性
    var mySymbol = Symbol();
    
    //第一种写法
    var a = {};
    a[mySymbol] = "Hello!";
    
    //第二种写法
    var a = {
         [mySymbol]: "Hellow!"
    }
    
    //第三种写法
    var a = {};
    Object.defineProperty(a, mySymbol, { value: "Hellow!" });
    
    //以上写法的结果都相同
    
    a[mySymbol] // "Hellow!"
    // 8、Symbol值作为对象的属性名时不能使用点运算符,同理,在对象的内部使用Symbol值时也必须放在方括号中
  • 相关阅读:
    天气预报 Web 服务
    安装IE8在控制面板里面删除之后进不去桌面,提示找不到IESetting.dll 解决办法(解决IE8卸载不了的问题,返回IE7 ,返回IE6),从IE8回到IE7的方法.
    提供股票的Web Sservices 接口
    vc中操作Xml使用CMarkup类
    不要埋怨空降兵了
    图像分割与描述
    [非常感人] 我还能再救一个!
    向汶川地震中死难者致哀
    关于dotNet加密工具
    不注册使用 .NET Reactor
  • 原文地址:https://www.cnblogs.com/zjz666/p/14431797.html
Copyright © 2011-2022 走看看