あかまです。

"T. Sugita" <nws-sugi@bp.iij4u.or.jp>さん wrote:
> ただ、スーパークラスのコンストラクタが prototype に対して
> アクセスしていますので、それだと SuperClass で private な
> 変数を使うと、共有してしまいますよね。

 JavaScript でオブジェクト指向プログラミングをする場合、オブジェクトに
private な変数は使うべきではないと考えています。次のデモコードを実行す
ると、私がそう主張する理由がわかると思います。

 クラスの定義に private な変数を用いると、そのクラスから生成されたオブ
ジェクトの間で、その変数が共有されてしまうのです。あえていうのでしたら
「private でクラスに static」な扱いとなります。

  <script type="text/javascript">
    function Demo()
    {
      var p = 1;

      function Demo_setVar( _int )
      {
        p = _int;
      }
      Demo.prototype.setVar = Demo_setVar;

      function Demo_getVar()
      {
        return p;
      }
      Demo.prototype.getVar = Demo_getVar;

      return this;
    }

    var demo1 = new Demo();
    var demo2 = new Demo();

    demo1.setVar( 5 );
    document.write( demo1.getVar()  +"<BR>");

    demo2.setVar( 10 );
    document.write( demo2.getVar() +"<BR>");

    document.write( demo1.getVar()  +"<BR>");
  </script>

-- 
赤間俊一 akama@home.so-net.ne.jp