JSにおける公共/私有変数と方法(翻訳まとめ)


パブリック/プライベート変数と方法
簡単な例を通して、JavaScriptを使ってクラス内でプライベート変数と方法を作成する方法を示します.
Summary
  • プライベート変数は、オブジェクト内部で「var」キーを使用して宣言され、プライベート関数と特権方法によってのみアクセスできます.
  • プライベート関数は、オブジェクトのコンストラクター内で声明(またはvar functionName=function(){…}によって定義されています)を表しています.これは、特権関数によって呼び出すことができます.
  • 特権的な方法は、this.methodName=function(){…}によって宣言され、対象外のコードによって呼び出される可能性がある.特権関数を呼び出すには、this.特権関数を使用してもいいです.プライベート関数()を使用して、プライベート関数を呼び出します.
  • 共通属性は、this.variable Nameによって定義され、対象外では読み書きが可能である.プライベート関数によって呼び出すことはできません.
  • 共通方法は、Class Name.prototype.methodName=function(){…}によって定義され、オブジェクトの外部から呼び出すことができる.
  • プロトタイプ属性はClass Name.prototype.propertyName=someValueで定義されています.
  • 静的属性は、Class Name.propertyName=someValueによって定義される.
  • また、このような表記に注意してください.var関数名=function関数名(){…}という関数が呼び出されたときは、特権関数とプライベート関数の特性があります.
     
    例:
     
    <html>
    <head>
    <title></title>
    <script type="text/javascript">
    function Container( param ) {
    
     function dec(){
          if ( secret > 0 ) {
             secret -= 1;
             setSecret( 7)
             alert( secret );
             return true;
          }
          else {
          //  alert( "over"+this.member);
             return false;
          }
       }
    
      // this.dec = dec;
       //this.dec = function dec (){...} different from above code.
       function setSecret( num ){
          secret = num;
       }
       this.member = param;
       var secret = 3;
       var self = this;
       this.service = function () {
          if (dec()) {
             alert();
          }
          else {
             return null;
          }
       }
    }
    
    //  ---------------------------------------
    
    function start(){
       alert( "Start" )
       var test = new Container( 'liuqi' );
      // test.setSecret( 2 );
       test.service(); 
       test.service(); 
       test.service(); 
       test.service(); 
      var test2 = new Container( 'liuqi' );
      //test2.service(); 
     // Container.dec();
    }
    </script>
    </head>
    <body>
    <div onclick="start()" style="color:blue">click me</div>
    </body>
    </html>