• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザー定義オブジェクト)

ユーザー定義オブジェクトとは?

このQ&Aのポイント
  • ユーザー定義オブジェクトは、コンストラクタを使用して作成されるオブジェクトです。
  • コンストラクタは、オブジェクトを初期化するために使用されます。
  • thisキーワードは、コンストラクタ内で定義されたプロパティにアクセスするために使用されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

初期化の意味 ということですが、質問のコードの場合はコンストラクタの引数をメンバ変数に代入する事を初期化と呼んでいるようですね。 コンストラクタでは、メンバ変数を初期化することは良くありますので、そのことを指しているのだと思います。 またfunction~の部分は、あくまでもコンストラクタとしての代入方法を書いてあるだけで、実体は有りませんが、 var rect1=new により新たに実体が作られ、コンストラクタにより引数で指定された値がメンバ変数に代入されます。 this は明示的に現在対象となっているオブジェクトを指すものです。 newは新しいインスタンス(実体)を作るためのキーワードですね。 オブジェクト指向やクラスの考え方について書かれた本などを一度読まれる事をお勧めします。 質問はJavaScriptについてですが、C言語がお分かりならソフトバンクから出ている「C++のからくり」という本がお勧めです。

rituritu
質問者

補足

すみません。JavaScript初心者なのでもう少し質問させていただきたくよろしくお願いします。 文脈から察すると、メンバ変数とはrect1、rect2のことを指すのですよね。 function Rectangle(w,h)でwとhを定義していますが、this.width=w;、this.height=h;で再度、wとhを定義しているのは何故でしょうか?

その他の回答 (1)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

メンバ変数は height と width です。 ソース全体が見えてないので何ともいえないのですが、どこかで height と width を定義してませんか? どこかでRectangleクラスの定義があると思うんですが、そのクラスのコンストラクタとして Rectangle(w,h)という関数があるわけです。 で、 this.height=h; は代入です。hの定義では有りません。 この辺はJavaScriptに限った話ではないので、クラスに関する本を読んだり、定義とか代入に関してはプログラミング自体の基本的な文を勉強された方が良いですね。

rituritu
質問者

お礼

正月休みで出かけていましたので、返事が送れて申し訳ございません。 JavaScriptの本を再度熟読し、ユーザー定義オブジェクトについては把握することができました。 私自身、C言語などのプログラミング経験がないのですが、 C言語の本も併用して読んでいます。 「C++のからくり」についてインターネットで調べました。 購入の検討をしたいと思っております。