Re: オブジェクト
板橋さん、こんばんは。中村です(久野さん、先ほどは名前を名乗らずにスミ
マセンでした)。
/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^l
l 板橋さん(ITAHASHI Kunio)は、 l
l 日時:Fri, 4 Jul 2003 02:03:02 +0900 に、 l
l 件名:< Re: オブジェクト > l
l として送信されました。 l
l /
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 水面下でsrNrがGasを切り分けている
板橋さんの仰る、
水面下でsrNrがGasを切り分けている
とはどういうニュアンスでしょうか?
> 「実体」を表わさなくて、不気味だったです。
板橋さんの最初のコードでは、mater1、mater2共々、プロパティはひとつしか
持っていません。つまりsrNrだけです。逆にお聞きしたいのは、何故、ひとつし
かプロパティを持たないオブジェクト生成に、コンストラクタに引数をふたつも
とるのかということです。
function Regulat(Gas){
this.srNr = Gas;
}
mater1 = new Regulat('NOx');
mater2 = new Regulat('COx');
で良いものを、何故、new するときにふたつも引数を与えるのでしょうか?確か
に、
function Regulat(Gas){
this.srNr = Gas;
}
mater1 = new Regulat('NOx');
mater2 = new Regulat('COx');
mater1.num = '12345';
mater2.num = '67890';
と後からプロパティを追加することは出来ますが、それなら最初から
function Regulat(srNr, Gas) {
this.srNr = srNr;
this.Gas = Gas;
}
とかやって、
mater1 = new Regulat('12345','NOx')
mater2 = new Regulat('67890','COx')
でも良いと思うしこれが一番エレガントだと思うのですが……。
私が言いたいのは、「水面下でsrNrがGasを切り分けている」 の意味にもより
ますが、
function Regulat(srNr, Gas) {
this.srNr = Gas;
}
この時点で、既にコンストラクタの引数であるsrNrは存在価値がないと思うので
す。コンストラクタ引数であるsrNrとインスタンス変数である(thisのついた)
srNrは全く別物です。少なくともコンストラクタ内では、arguments がコンスト
ラクタ引数であるsrNrを保持していますが、オブジェクトとしてみた場合、コン
ストラクタ引数であるsrNrは一度も使われていません。そんな運命しかない引数
をコンストラクタに与える意味は何なのでしょうか?
> できれば、持ち駒だけで取り出す「エレガントな」方法が
> 他にもあるのなら、それをぜひ知りたいです。
コンストラクタを弄らないで済む方法ですよね?それをさっきから探していた
んですが力不足で........
---------------------------------------
Hirotsugu Nakamura <CQE25120@nifty.com>
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