zoukankan      html  css  js  c++  java
  • 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() //

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

  • 相关阅读:
    字典-字典练习
    元组
    切片
    列表-列表练习
    一个登录小程序
    py定义变量-循环-条件判断
    charles抓包
    接口测试-Http状态码-postman上传文件
    jm解决乱码问题-参数化-数据库操作-文件上传下载
    (二)CRLF注入
  • 原文地址:https://www.cnblogs.com/little-oil/p/13652631.html
Copyright © 2011-2022 走看看