板橋さん、こんばんは。中村です(久野さん、先ほどは名前を名乗らずにスミ
マセンでした)。

/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^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>