出现
symbol的出现主要解决的是:阻止对象实例使用不想被直接访问的属性
用法精髓
- 使用函数作用域或者用类来隔离外部的作用域
- 通过计算属性值可以达到内部可操作的目的
- 外部不能访问到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值