Re: オブジェクト
中村さん、こんにちは。
>> 水面下でsrNrがGasを切り分けている
> 板橋さんの仰る、
> 水面下でsrNrがGasを切り分けている
>とはどういうニュアンスでしょうか?
>
なにせ素人考えなので、真偽のほどはあやしいのですが、
function Regulat(srNr, Gas){
this.srNr = Gas;
}
mater1 = new Regulat('12345','NOx')
mater2 = new Regulat('67890','COx')
というコンストラクタとインスタンスをセットすると、
mater1.srNr // displays NOx
mater2.srNr // displays COx
ですよね。(以下、コメントアウトは実行結果を表わす)
プロパティが共通なのに実行結果はオブジェクトに応じ
てきちんと分けて取得できてる(みたいだ)。なんでかな、
と思ったわけです。それで、それはきっと、"12345" とか
"67990" が陰で糸を引いているにちがいない、と。でも、
決して表面には出て来ない。で、こいつらはどこで仕事し
てるんだろう、と思ってその居場所をあぶり出そうと思っ
たわけです。
でも、悲しいかな、いくらやっても初心者の私には彼らの
居場所を特定できない(居場所というのとはちょっと違うの
かもしれないんですが、私の素人感覚です)。
で、このコンストラクタの評価もかねてお伺いしようと思った
次第でした。実は、このコンストラクタは私が考えたもので、
教科書的な書き方はみなさんが書いていらっしゃるような
ものですよね。こちらの、構造はムダなようで、不可欠性
を内包しているというか、そんな気がしました。でも、中村
さんの説明を拝読して、それが違っていたような気がしてま
す。
>> 「実体」を表わさなくて、不気味だったです。
> 板橋さんの最初のコードでは、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')
>でも良いと思うしこれが一番エレガントだと思うのですが……。
>
function Regulat(Gas){
this.srNr = Gas;
}
は
function Regulat(Gas){
this.Gas = Gas;
}
だと思いますが、たしかにおっしゃるとおりですよね。私の
コンストラクタはちょっと変わっているというか、ヘンかも
しれません。これは、配列の発想がアタマにあるので、そう
したのだと思います。違っているかもしれませんが、その方
がコードを節約できるような気がして・・・。
いろいろありがとうございます。
--
板橋
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