一、命名上做区别
_ccc是一个仅限于内部使用的私有方法
class a{
//公有方法
foo(b){
this._ccc(b);
}
//私有方法
_ccc(b){
return this.data = b;
}
}
二、私有方法移出模块
模块内部的方法对外都是可见的,内部使用b.call(this, b),这样b实际上是当前模型
class a{
//公有方法
foo(c){
cccc.call(this, c);
}
}
//当前模块的私有方法
function cccc(c){
return this.data = c;
}
三、使用Symbol值的唯一性,将私有方法名字成为一个Symbol值
下面的代码种,b和c都是Symbol值,外部无法获取到它们
const b = Symbol('b');
const c = Symbol('c');
class a{
//公有方法
foo(data){
this[b](data)
}
//私有方法
[b](data){
return this[c] = data;
}
}