JavaScript 类私有方法的实现

时间:2021-05-27 15:38:42

一:将私有方法移出模块,因为模块内部的所有方法都是对外可见的。

class Widget {
foo (baz) {
bar.call(this, baz);
} // ...
} function bar(baz) {
return this.snaf = baz;
}

foo是公有方法,内部调用了bar.call(this, baz)。这使得bar实际上成为了当前模块的私有方法。

二:利用Symbol值的唯一性,将私有方法的名字命名为一个Symbol值。

const bar = Symbol('bar');
const snaf = Symbol('snaf'); export default class myClass{ // 公有方法
foo(baz) {
this[bar](baz);
} // 私有方法
[bar](baz) {
return this[snaf] = baz;
} // ...
};

参考链接:http://es6.ruanyifeng.com/#docs/class