文書の過去の版を表示しています。
— y2sunlight 2021-05-17
JavaScriptでは他のオブジェクト指向言語と異なり、プライベートメンバを定義する構文がありません。その代わりにクロージャを使用します。
function Circle(radius) {
  var _radius;
  
  // プライベートメソッド(クロージャ)
  var _area = function() {
    return _radius * _radius * Math.PI;
  };
  
  // パブリックメソッド
  this.setRadius = function(radius) {
    // プライベートプロパティに設定
    _radius = radius
  };
  
  // パブリックメソッド
  this.getRadius = function() {
    // プライベートプロパティから取得
    return _radius; 
  };
  
  // パブリックメソッド
  this.getArea = function() {
    // プライベートメソッドにアクセス
    return _area(); 
  };
  this.setRadius(radius);
}
var a = new Circle(10);
console.log(a.getRadius());  // 結果:10
console.log(a.getArea());    // 結果:314.1592653589793
TODO
上例の様にクロージャ(特権メソッド)を使用して、アクセッサを実装する代わりに、Object.definePropertyメソッドを利用してアクセッサメソッドを実装することもできます。