JS-symbol

290 阅读1分钟

出现

symbol的出现主要解决的是:阻止对象实例使用不想被直接访问的属性

用法精髓

  1. 使用函数作用域或者用类来隔离外部的作用域
  2. 通过计算属性值可以达到内部可操作的目的
  3. 外部不能访问到symbol的值,以最终达到阻止直接访问属性的目的

案例

function Demo(){
    const symCout = Symbol("count")
    this[symCout] = 10//计算属性值
    this.counter = ()=>{
        console.log(this)//指向Demo()作用域
        this[symCout]++;
        console.log(this[symCout])
    }
}
let demo = new Demo()
demo.counter()//11 在内部方法中可以自己使用,“属性私有化”
console.log(demo.count)//undefined count属性相当于未定义
console.log(demo[symCout])//error 外部访问不到这个symbol值