【发布时间】:2017-06-05 23:22:48
【问题描述】:
我对 ES6 的 Classes 隐私有点迷茫。我有这个类:
class Whatever {
constructor(value) {
this._value = Number(value);
}
total() {
return this._value * 2;
}
}
let instance = new Whatever('1000');
console.log(instance.total() ); // 2000
console.log(instance._value ); // 1000
我正在尝试了解 Symbol() 如何保持数据的私密性 (see link),在阅读了文档后,我试图举一个简单的例子,但似乎没有任何区别:
const _value = Symbol('value');
class Whatever {
constructor(value) {
this[_value] = Number(value);
}
total() {
return this[_value] * 2;
}
}
let instance = new Whatever('1000');
console.log(instance.total() ); // 2000
console.log(instance[_value] ); // 1000
有人可以全面解释一下,隐私在这个案例中是什么意思,为什么我将数据私有化(使数据无法从班级外部访问)的想法是错误的?我在 OOP 方面没有太多经验。
谢谢。
【问题讨论】:
-
它是一样的,正如链接文章提到的那样:它们(两者)“对外界有些隐藏,但并不完全”。
标签: javascript oop private