ES2015からPHPのようなインスタンス実行時に自動で処理される特殊なメソッドであるコンストラクターが作れるそうです。そのjavascriptにおけるコンストラクターとは、Objectオブジェクトのassignという、第二引数以降に指定した引数が持っているメンバを第一引数に結合(複製?)させるメソッドを使うことでコンストラクターでよく利用する関数等で使う初期値の設定を単純に表現できるそうです。
javascript
1constructor(firstName,lastName) { 2 Object.assign(this,{firstName,lastName}); 3}
このような単純に表現する方法を記述した書籍Javascript本格入門によれば
コンストラクター配下では、thisが現在のインスタンスを渡すので、これに引数をまとめたオブジェクトリテラルをまとめて結合しているわけです。<略>初期化すべき値が増えた場合にも同じような代入式を列記しなくて済む<略>
ここで質問がいくつかあります。
1
コンストラクター配下でthisがインスタンスを参照するのは、変数thisがメソッド内にあるとレシーバオブジェクト、つまり呼び出し元のオブジェクトを指すからですか。
2
いわゆるインスタンスの元となるクラスつまりコンストラクタと、上述のコンストラクタは、呼び名が同じだけで中身は全く違うものですか。
3
引用文の「thisが現在のインスタンスを渡すので、これに引数をまとめたオブジェクトリテラルをまとめて結合しているわけです」というのは、何らかの理由でthisがインスタンスを参照しているので、このインスタンスにconstructorの引数でありインスタンスの初期値となるfirstName、lastNameを{x:1,y:0}
のようなオブジェクトリテラルとしてまとめ、インスタンスに渡している、ということであっておりますか。しかしいまいち結合したものをインスタンスに渡す利点がわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。