Re: Singleton
あかまです。
"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
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735