私有属性,即仅在当前class中有访问和修改权限,子类无法继承父类的私有属性。
下面为思考过程,若要看结果,直接跳到方案四
方案一:(错误示范)
let ClsA = (function(){
let _x
class Cls {
setX = (x) => { _x = x }
getX = () => { return _x }
}
return Cls
})()
let clsA = new ClsA
console.log(clsA)
// 输出:Cls {setX: ƒ, getX: ƒ}
cls.setX('clsA')
console.log(cls.getX())
// 输出:clsA
上述代码貌似实现了私有属性,但存在一个问题,具体看下面
let clsA2 = new ClsA
clsA2.setX('clsA2')
console.log(clsA2.getX())
// 输出:clsA2
console.log(clsA.getX())
// 输出:clsA2 ----> 之前的clsA中的私有变量也被改值了
方案二:
针对上面出现的