1. 程式人生 > 實用技巧 >ES6 新屬性 Symbol

ES6 新屬性 Symbol

Symbol:

  ES6 新增的一個基本型別,一個symbol的值可以通過 Symbol函式來獲得

var sym= Symbol()
/* 
    Symbol的引數其實沒有什麼意義,只是給我們一個標示。例如:
    {Symbol('name'): 'Jack'}  看作 {name: 'Jack'}
    便於理解 變數的意思
*/
var s= Symbol('name') 

  那麼開發中有什麼用處? 下面介紹一種

class Person {
    constructor(name, gender) {
        this.name = name
        
this.gender= gender } } // 現實中一個人的性別,出生之後就不會再改變,而這個類就做不到這一點 var man= new Person('jack','男') man.gender= '女' // 這個男的 變性了

  那麼使用Symbol 後

class Person {
    constructor(name, gender) {
        this.name = name
        var key = Symbol('gender')
        this[key] = gender
        Person.prototype.say 
= function () { console.log(this[key]) } } } var man= new Person('jack','男') // Person { name: 'jack', [Symbol(gender)]: '男' } man[Symbol('gender')]='女' // 報錯 // 這樣這個類裡面既有性別屬性 ,也不能被改變,私有變數得到了保護 man.say() //

如果還有什麼應用場景 ,歡迎評論 討論