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() // 男
如果还有什么应用场景 ,欢迎评论 讨论
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。