現在、ユーザー定義オブジェクトについて勉強しています。
以下は本からの抜粋です。
//コンストラクタを定義する。
//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を使用している意図など)
ご教授いただきたく、よろしくお願いします。
No.2
- 回答日時:
メンバ変数は height と width です。
ソース全体が見えてないので何ともいえないのですが、どこかで height と width を定義してませんか?
どこかでRectangleクラスの定義があると思うんですが、そのクラスのコンストラクタとして Rectangle(w,h)という関数があるわけです。
で、 this.height=h; は代入です。hの定義では有りません。
この辺はJavaScriptに限った話ではないので、クラスに関する本を読んだり、定義とか代入に関してはプログラミング自体の基本的な文を勉強された方が良いですね。
正月休みで出かけていましたので、返事が送れて申し訳ございません。
JavaScriptの本を再度熟読し、ユーザー定義オブジェクトについては把握することができました。
私自身、C言語などのプログラミング経験がないのですが、
C言語の本も併用して読んでいます。
「C++のからくり」についてインターネットで調べました。
購入の検討をしたいと思っております。
No.1ベストアンサー
- 回答日時:
初期化の意味 ということですが、質問のコードの場合はコンストラクタの引数をメンバ変数に代入する事を初期化と呼んでいるようですね。
コンストラクタでは、メンバ変数を初期化することは良くありますので、そのことを指しているのだと思います。
またfunction~の部分は、あくまでもコンストラクタとしての代入方法を書いてあるだけで、実体は有りませんが、 var rect1=new により新たに実体が作られ、コンストラクタにより引数で指定された値がメンバ変数に代入されます。
this は明示的に現在対象となっているオブジェクトを指すものです。
newは新しいインスタンス(実体)を作るためのキーワードですね。
オブジェクト指向やクラスの考え方について書かれた本などを一度読まれる事をお勧めします。
質問はJavaScriptについてですが、C言語がお分かりならソフトバンクから出ている「C++のからくり」という本がお勧めです。
この回答への補足
すみません。JavaScript初心者なのでもう少し質問させていただきたくよろしくお願いします。
文脈から察すると、メンバ変数とはrect1、rect2のことを指すのですよね。
function Rectangle(w,h)でwとhを定義していますが、this.width=w;、this.height=h;で再度、wとhを定義しているのは何故でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
戻り値がクラスオブジェクト
-
ASP.net 教えてください!!(...
-
newは明示的にした方が良いのか?
-
COMコンポーネントって何?
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
Flashのアクションスクリプト
-
error C2712: オブジェクト ア...
-
ADO オブジェクトの渡し方
-
vb.net オブジェクト指向につい...
-
0 == False はいいけど
-
EXCEL VBAにて動的にCheckBOXを...
-
ArrayLsitのデータ取得
-
ビジュアルC++でボタンの有...
-
CとC++の違い
-
VBA 同じ名前のオブジェクトを...
-
Ajax.Requestについて
-
c言語ソースコード内のオブジェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
VBA 同じ名前のオブジェクトを...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBAのWindowオブジェクトとWork...
-
C#でフォームのオブジェクト名...
-
ワイルドカード<?>と型パラメー...
-
COMコンポーネントって何?
-
ビジュアルC++でボタンの有...
-
Object型からDouble型へのキャスト
-
error C2712: オブジェクト ア...
-
newは明示的にした方が良いのか?
-
オブジェクトレベルとメタレベル
-
0 == False はいいけど
-
ASP.net 教えてください!!(...
-
LISTBOXの内容が更新されま...
-
戻り値がクラスオブジェクト
-
時間帯判定をする。
-
Vbで通常使用するプリンターを...
-
ワードで画像をドロップすると...
おすすめ情報