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';javascript

使用Symbol()函數能夠建立一個symbol類型值。

前面不能使用new,不然會報錯;由於Symbol是一種值類型數據,這也是很好理解的.Symbol()用做Symbol值的描述,也能夠理解爲鍵(key),代碼實例以下:java

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

經過鍵就能夠比較方便的區分兩個Symbol值。
鍵相同的兩個Symbol值並不相同:函數

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

上面兩個Symbol值是不相等的。
Symbol值不可以被隱式轉換爲字符串類型,代碼實例以下:this

let s = Symbol("腳本之家");
//報錯
`antzone ${sym}`
//報錯
"antzone" + sym
相關文章
相關標籤/搜索