質問: 現在、ユーザー定義オブジェクトについて勉強しています。 以下は本からの抜粋です。 //コンストラクタを定義する。 //thisで参照するオブジェクトの初期化法に注目 function Rectangle(w,h) { this.width=w; this.height=h; } //コンストラクタを呼び出して2つの長方形オブジェクトを生成する。 //widthとheightをコンストラクタに渡して、それぞれの新しい //オブジェクトを適切な形で初期化するやり方に注目 var rect1=new Rectangle(2,4); var rect2=new Rectangle(8.5,11); ★質問★ this.width=w; this.height=h; var rect1=new Rectangle(2,4); var rect2=new Rectangle(8.5,11); この2箇所で行っている「初期化」という作業の意味がよく分かりません。 また、ユーザー定義オブジェクトの概念についていまいちイメージ がつかめていません(特にthisとnewを使用している意図など) ご教授いただきたく、よろしくお願いします。
回答: メンバ変数は height と width です。 ソース全体が見えてないので何ともいえないのですが、どこかで height と width を定義してませんか? どこかでRectangleクラスの定義があると思うんですが、そのクラスのコンストラクタとして Rectangle(w,h)という関数があるわけです。 で、 this.height=h; は代入です。hの定義では有りません。 この辺はJavaScriptに限った話ではないので、クラスに関する本を読んだり、定義とか代入に関してはプログラミング自体の基本的な文を勉強された方が良いですね。