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值时也必须放在方括号中
  • 相关阅读:
    HTML5学习总结-番外05 http 状态码
    Python开发技巧
    QPushButton class
    Qt class
    QTableWidgetItem class
    毕业设计进度10
    毕业设计进度9
    毕业设计进度8
    毕业设计进度7
    毕业设计进度6
  • 原文地址:https://www.cnblogs.com/zjz666/p/14431797.html
Copyright © 2011-2022 走看看