简单类
,其中包含私有、公共和受保护的属性和方法。
'use strict';
class MyClass {
constructor () {
this.publicVar = 'This is Public Variable';
this.privateVar = 'This is Private Variable';
this.protectedVar = 'This is Protected Variable';
} // Public Constructor Method.
publicMethod () {
console.log(' Accessing this.publicVar: ', this.publicVar);
console.log(' Accessing this.privateVar: ', this.privateVar);
console.log(' Accessing this.protectedVar: ', this.protectedVar);
return 'Its Public Method'
} // Public Method.
privateMethod () {return 'Its Private Method'} // Private Method.
protectedMethod () {return 'Its Protected Method'} // Protected Method.
foo () {
this.publicMethod();
this.privateMethod();
this.protectedMethod();
} // Public Method
} // end class
我正在实例化对象并调用公共方法,一切都按预期工作。
let MyObject = new MyClass;
MyObject.foo(); // Works fine.
console.log( MyObject.publicVar ); // Works
console.log( MyObject.publicMethod() ); // Works
按预期工作。
现在我的问题是,我知道像Symbol这样的东西在ES6规范中,那么在ES6类中,如何实现保护和私有变量/方法的当前解决方法。
console.log( MyObject.privateVar ); // Works
console.log( MyObject.privateMethod() ); // Works
我希望这个属性和方法只在它自己的类中可见。
console.log( MyObject.protectedVar ); // Works
console.log( MyObject.protectedMethod() ); // Works
我希望这个属性和方法在它自己的类中以及继承它的类中可见。
欢迎提供解决方案以实现此行为。