Модификаторы доступа (частный, защищенный) в ES6

Примечание: я уже прошел ниже вопрос SO и 7 ответов (на данный момент) оСимволы, WeekMaps и Карты, пожалуйста, прочитайте полный вопрос, прежде чем голосовать:Частная собственность в классах JavaScript ES6
Статья:https://esdiscuss.org/topic/es7-property-initializers

Ниже мойSimple Class который содержит частные, публичные и защищенные свойства и методы.

  '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

Работает как положено.

Теперь мой вопрос. Я знаю, что в спецификации ES6 есть несколько вещей, таких как Symbol, каков текущий способ обхода защищенных и закрытых переменных / методов, работающих с классами ES6.

console.log( MyObject.privateVar ); // Works
console.log( MyObject.privateMethod() ); // Works

Я хочу, чтобы это свойство и метод были видны только в своем собственном классе.

console.log( MyObject.protectedVar ); // Works
console.log( MyObject.protectedMethod() ); // Works

Я хочу, чтобы это свойство и метод были видны в его собственном классе и внутри классов, расширяющих его.

Обходное решение / лучшее решение для достижения такого поведения приветствуется

Ответы на вопрос(1)

Ваш ответ на вопрос