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() // 男
如果还有什么应用场景 ,欢迎评论 讨论
原文:https://www.cnblogs.com/little-oil/p/13652631.html