es6新數據類型Symbol

Symbol

es6之後的第7種數據類型

當通過Sympol()創建的值得時候,無論內部值是什麼,都是不相等的

const s = Symbol('123');

const b = Symbol('123');

console.log(s === b); // false

const a = Symbol.for('123');

const c = Symbol.for('123');

console.log(a === c); // true

當通過Symbol.for()創建值得時候,會全局查看有沒有創建過該值,如果創建過會直接取這個已經被創建的值.

 

定義在類中並取值

const r = Symbol.for('aaa');

class ddd {

  get [r]() {

    console.log(123);

    return '33333';

  }

}

const dddObj = new ddd();

console.log(dddObj[r]); // 33333

console.log(Object.getOwnPropertySymbols(ddd.prototype)); // [ Symbol(aaa) ]

通過在類中定義 get [xx] () {}方法。

然後實例化該類yy,通過實例化對象  y[xx] 即可調用對應的方法。

 

或者

 

const r = Symbol.for('aaa');

const ddd = {

  get [r]() {

    console.log(123);

  },

};

ddd[r];

 

 

最終其實就相當於將r作爲一個key加入到了對象中通過 對象.xx 或者 對象[xx]就可以取到值。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章