微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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() // 男

如果还有什么应用场景 ,欢迎评论 讨论  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐