ES6 新屬性 Symbol
阿新 • • 發佈:2020-09-11
Symbol:
ES6 新增的一個基本型別,一個symbol的值可以通過 Symbol函式來獲得
var sym= Symbol() /* Symbol的引數其實沒有什麼意義,只是給我們一個標示。例如: {Symbol('name'): 'Jack'} 看作 {name: 'Jack'} 便於理解 變數的意思 */ var s= Symbol('name')
那麼開發中有什麼用處? 下面介紹一種
class Person { constructor(name, gender) { this.name = namethis.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() // 男
如果還有什麼應用場景 ,歡迎評論 討論