-PR-
解決
済み

ユーザー定義オブジェクト

  • すぐに回答を!
  • 質問No.23193
  • 閲覧数118
  • ありがとう数6
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 20% (1/5)

現在、ユーザー定義オブジェクトについて勉強しています。

以下は本からの抜粋です。

//コンストラクタを定義する。
//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を使用している意図など)

ご教授いただきたく、よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル13

ベストアンサー率 26% (511/1924)

初期化の意味 ということですが、質問のコードの場合はコンストラクタの引数をメンバ変数に代入する事を初期化と呼んでいるようですね。
コンストラクタでは、メンバ変数を初期化することは良くありますので、そのことを指しているのだと思います。
またfunction~の部分は、あくまでもコンストラクタとしての代入方法を書いてあるだけで、実体は有りませんが、 var rect1=new により新たに実体が作られ、コンストラクタにより引数で指定された値がメンバ変数に代入されます。

this は明示的に現在対象となっているオブジェクトを指すものです。
newは新しいインスタンス(実体)を作るためのキーワードですね。

オブジェクト指向やクラスの考え方について書かれた本などを一度読まれる事をお勧めします。
質問はJavaScriptについてですが、C言語がお分かりならソフトバンクから出ている「C++のからくり」という本がお勧めです。
補足コメント
rituritu

お礼率 20% (1/5)

すみません。JavaScript初心者なのでもう少し質問させていただきたくよろしくお願いします。

文脈から察すると、メンバ変数とはrect1、rect2のことを指すのですよね。

function Rectangle(w,h)でwとhを定義していますが、this.width=w;、this.height=h;で再度、wとhを定義しているのは何故でしょうか?
投稿日時 - 2000-12-30 23:09:24
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル13

ベストアンサー率 26% (511/1924)

メンバ変数は height と width です。 ソース全体が見えてないので何ともいえないのですが、どこかで height と width を定義してませんか? どこかでRectangleクラスの定義があると思うんですが、そのクラスのコンストラクタとして Rectangle(w,h)という関数があるわけです。 で、 this.height=h; は代入です。hの定義では有りません。 この辺は ...続きを読む
メンバ変数は height と width です。
ソース全体が見えてないので何ともいえないのですが、どこかで height と width を定義してませんか?
どこかでRectangleクラスの定義があると思うんですが、そのクラスのコンストラクタとして Rectangle(w,h)という関数があるわけです。
で、 this.height=h; は代入です。hの定義では有りません。

この辺はJavaScriptに限った話ではないので、クラスに関する本を読んだり、定義とか代入に関してはプログラミング自体の基本的な文を勉強された方が良いですね。
お礼コメント
rituritu

お礼率 20% (1/5)

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


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ