Re: Singleton
あかまです。
前回のポストの主旨は、次の2つでした。やや言葉足らずでした。
1.
this で定義したメソッドならば、そのメソッドの内部での変数のスコープは
ちゃんと生成されたオブジェクトの内部に収まります。問題は prototype で
定義したメソッドの内部だけ、変数のスコープが別になるんですよね。それを
「private でクラスにstatic」と表現しました。
このような言語仕様に沿って考えると、JavaScriptで継承を実装する場合は、
わざと
^^^^^^
"T. Sugita" <nws-sugi@bp.iij4u.or.jp>さん wrote:
> ただ、スーパークラスのコンストラクタが prototype に対して
> アクセスしていますので、それだと SuperClass で private な
> 変数を使うと、共有してしまいますよね。
(再引用)
と実装しなくては、言語仕様に一貫性がでてこないですよね。
# つまり private な変数は、値を含めて引き継がなくてなくてはならない。
2.
しかしこのように実装すると、継承を重ねた場合に private な変数のスコー
プが混乱します。したがって使うべきではないと。
-*-
初期の JavaScript を使っていたときにこのスコープに苦しみ、Microsoft
が JScript でこの言語を再実装したときは、よくここまで互換性が取れたも
のだ、と感心しました。
--
赤間俊一 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