• ベストアンサー

オブジェクトやプロパティ、メソッドに付いて

今、JavaScriptを覚えようとしてるのですが、オブジェクトから訳が分からなくなってきました。 ゲームに例えたら、自機がオブジェクトで、プロパティが自機のステータスで、 メソッドがいろいろな動作をさせる関数って感じでいいんでしょうか? それと、オブジェクトは下のようにメソッドやパラメータを使用しますが、 パラメータ=="値" って感じなのでしょうか?? オブジェクト名.メソッド名(パラメータ); オブジェクト名.プロパティ名="値"; よろしくご指導お願いします。

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

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

どうも用語に惑わされているような気がします。 No.1で述べたとおり、JavaScriptにはプリミティブ型(Undefined型, Null型, Number型, String型, Boolean型)と、オブジェクト型(Object型)に分けられます。プリミティブ型以外は全てオブジェクト型です。 ただし、JavaScriptの変数はCのように明示的に型を指定する必要がなく、あらゆる型の値を自由に入れることができます。 var a = 0; // typeof(a) ---> "number" ---> Number型 a = new Number(0); // typeof(a) ---> "object" ---> Object型 オブジェクトは上記のようにnewを使って作成することが出来ます。また、関数・配列・連想配列など、newを使わずにオブジェクトを生成することも出来ます。例えば、以下の2つは(値が)同じ配列(オブジェクト)です。 var a1 = [1,2,3]; var a2 = new Array(1,2,3); ちなみにnewできるのは関数だけです。よって"alert(typeof(Array));"のようにすれば、Arrayは(Number, Stringなども)関数であることが確認できます。newはプロトタイプ型のオブジェクト指向と密接に関わってくるのですが、この辺に関しては追々理解すれば良いかと思います。 では「オブジェクトはプリミティブ型の値とどう違うのか」ですが、大雑把に言えば、オブジェクトは「プロパティ」というものを持てます。プロパティには"object.property"か"object['property']"の形でアクセスすることができます。以下、適当な例です。 var s = "string"; // String型 s.hoge = "hoge"; alert(s.hoge); // undefined s = new String(s); // Stringオブジェクト s.hoge = "hoge"; alert(s.hoge); // hoge alert(s['hoge']); // hoge ちなみに、varを付けずに変数を宣言するとグローバル変数になりますが、実を言うと、この「グローバル変数」というのは、windowオブジェクトのプロパティです。 // ローカル変数として(=varで)gを宣言していない状態で g = "hoge"; alert(window.g); // hoge >パラーメータ=="値"のところですが、メソッド(パラメータ)のカッコの中は、C言語などで言うところの実引数の「変数」と同じだったら、パラメータも変数のデータ「値」と同じもの よって、上記で「メソッド」と呼んでいるものは、実際には、オブジェクトのプロパティ(に関数が入ったもの)です。「パラメータ」というのは引数のことを言っているのだと思いますが、これはオブジェクトのプロパティとは関係ない、ただのローカルな変数です(Cと同じです)。 var obj = { say: function(s) { alert(s); }, s: "hoge" }; obj.say("huga"); // huga alert(obj.s); // hoge #他にもthisの問題など色々あるのですが、それも追々でしょうか。 ずいぶんと長々と書いてしまいましたが、あまり言葉に拘らずに、色々手を動かしてみるのが良いかと思います。 #簡単な実験をするのであれば、各ブラウザのデベロッパーツールのコンソールを利用すると便利です。(Firefoxの場合はFirebugの方が良いかもしれません。) #私もそれなりにJavaScriptについては勉強してきたつもりですが、知らないことがまだまだたくさんある、というか尽きることがないです。実践しながら気長に勉強するのが良いかと思います。

TheUmamoe
質問者

お礼

親身にお答えくださってありがとうございます。 小さなソースから、少しずつでも理解を深めるよう学んでいきます。

その他の回答 (1)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

JavaScriptには、変数の型として、プリミティブ型とオブジェクト型があります。 プリミティブ型の変数の例としては var i = 1, b = true, s = "string"; のi, b, sなどが挙げられます。 プリミティブ型は以外のものは全てオブジェクト型となります。 http://www.findxfine.com/programming/javascript/228.html string型とStringオブジェクト http://chaichan.web.infoseek.co.jp/src/javasc14.htm >ゲームに例えたら、自機がオブジェクトで、プロパティが自機のステータスで、 >メソッドがいろいろな動作をさせる関数って感じでいいんでしょうか? ゲームにたとえるのであれば、そのような感じの認識で大丈夫かと思います。 #私にとっては、逆にイメージしずらいのですが…(笑) >それと、オブジェクトは下のようにメソッドやパラメータを使用しますが、 >パラメータ=="値" って感じなのでしょうか?? >オブジェクト名.メソッド名(パラメータ); >オブジェクト名.プロパティ名="値"; この質問の意味がつかめないのですが、「パラメータ=="値" って感じ」とはどういうことを意図しているのでしょうか? 以下など参照してみるとよいかもしれません。 http://d.hatena.ne.jp/jdg/20090612/1244765780

TheUmamoe
質問者

補足

やさしく、説いてくださってありがとうございます。 えっと、パラーメータ=="値"のところですが、メソッド(パラメータ)のカッコの中は、C言語などで言うところの実引数の「変数」と同じだったら、パラメータも変数のデータ「値」と同じものなのかなと思ったんですが、配列変数もオブジェクトだとか書いてあるの見たら、余計わからなくなってきました。 。

関連するQ&A

  • オブジェクトでサポートされていないプロパティまたはメソッドです。

    jQuery にて初のサイト構築に試みたのですが、 <script type="text/javascript"> (function() { $.mailbox(); })(jQuery); </script> ↑の記述だと IE6 の場合のみ 『オブジェクトでサポートされていないプロパティまたはメソッドです。』 とエラーが帰ってきてしまいます。 どうかご教授願います。宜しくお願い致します。

  • クラス、メソッド、プロパティ、変数などの意味は?

    いろんなサイトやネットでいろいろ調べたのですが、 よく分かりませんでした。自分なりに考えたことですが、 (1)~(6)の用語の内容とコード上での色付けは正しいでしょうか? (1)クラス(緑枠) コンストラクタ、メソッド、プロパティを一括りにまとめたパッケージのこと。 つまり、functionの【{】と【}】の間にあるもの。 (2)オブジェクト(青枠) 関数。すなわち「複数の物や動作を入れる物」。 つまりfunctionで始まるものをオブジェクトと呼ぶ。 (3)コンストラクタ(= クラス名または関数名)(紫枠) 「構築子」のこと。オブジェクトを作る名前の部分。 つまりfunction直後に付ける関数名(クラス名)をコンストラクタと呼ぶ。 (4)プロパティ(赤枠) 「特徴」のこと。 つまりfunction内で指定された変数(var b)をプロパティと呼ぶ。 function a(){var b;}; (5)メソッド(水色枠) 「動作」のこと。 つまりオブジェクト(functionで始まるもの)が 変数(var b)に指定された場合はメソッドと呼ぶ。 var b = function a(){}; (6)変数(灰色枠) function外で指定された変数(var b)は、変数と呼ぶ。 function a(){}; var b;

  • 各オブジェクトのプロパティを掲載しているサイト

    各オブジェクトのプロパティを掲載しているサイトを教えてください。JavaScriptの本を数冊買ったのですが載っていませんでした。 ついでに各プロパティ・各メソッドの効果が掲載されているサイトがあれば教えて下さい。

  • オブジェクト、プロパティ、メソッドの関係

    環境:OS.Win2000、Excel2000VBA プロパティやメソッドの呼び出し方法に疑問があります。 ExcelのVBAで以下の動作は確認しています。(例1) Dim xlApp As Application Dim xlBook As Worksheet '置換 xlApp.ActiveCell.Replace what:="A", replacement:="B", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False '検索 Set Oret = xlBook.Application.Cells.Find(what:="A", After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) 疑問に思っているのは「xlApp.ActiveCell.Replace」の”Replaceメソッド”を オブジェクトブラウザで調べるとRangeオブジェクトと、WorksheetFunctionオブ ジェクトにしか含まれないように受け取れます。またヘルプの「対象」を見ても Replaceが含まれているのは二つしかありません。ようするに以下の二通りでし か使えないように思えるのです。 Dim A As Range Dim B As WorksheetFunction A.Replace ~ B.Replace ~ しかし実際には(例1)のようにApplicationオブジェクトでも”Replaceメ ソッド”を使えます。”Replace関数”を見てみても引数を見ると”Replace メソッド”です。いまひとつ理解が浅いため目的の動作をさせるのにどのオ ブジェクトからメソッドを呼べば良いのか分かりません。基本的な事なのか もしれませんが、ぜひご回答くださいよろしくお願いします。

  • 普通の関数とメソッドの違い【JavaScript】

    こんにちは 今、Javascriptについて勉強しているのですが、 普通の関数と、 オブジェクトの中にあるプロパティのメソッド(つまり関数) とは、何が違うのでしょうか・・・

  • ActiveX名.オブジェクト名.GETメソッド?

    お世話になります。 VB6SP6です。 ActiveXコントロールにはプロパティ・メソッド・イベントが設定できることがわかりました。 また、クラスを使用することで「オブジェクトの追加」が出来ることをこちらで教えていただきました。 そこで質問です。 メソッド名に「Get」を使用することは出来ますか? ActiveX名.オブジェクト名.GETという風に使用したいのですが。。。 ヒントなどでもいただければ助かります! よろしくお願いいたします。

  • setTimeは、返り値がなぜ不要なのでしょうか?

    ・Dateオブジェクトを見ているのですが、setTimeメソッドが理解できません ・getTimeメソッドだと、「返り値」を受け取れるのに、 setTimeメソッドでは、なぜ「返り値」を受け取れないのでしょうか? ・メソッド名に「set」「get」が付いているので、てっきりセッターゲッターみたいな物だと思ったのですが… ・直接プロパティ値を書き換えるのでしょうか? 参照みたいに ・マニュアルを見たら、「インスタンスを生成した関数を返します。これはデフォルトでは Date コンストラクタです」と書かれているのですが、これはどういう意味なのでしょうか? ・コンストラクタなのに、プロパティ? インスタンスを生成した関数? >このプロパティの値は関数そのものの参照であり、関数の名前を含んだ文字列ではないことに注意してください ・関数そのものの参照って何ですか? ・Dateオブジェクトの実体はどこに存在しているのでしょうか? ▽Date - JavaScript | MDN   https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Date

  • クラス・メソッド・プロパティについて

    質問の閲覧ありがとうございます、是非回答お願い致します。 前々からプロミングに興味があったのですが、敷居が高そうという勝手な思い込みから、手を出せずにいましたが 先週ごろからVB.netの方を少しずつではありますが勉強し始めました。 色々なサイトを参考に実際キーボードを叩きながら四苦八苦している最中なのですが、クラス(インスタンシング)・メソッド・プロパティで壁にぶち当たりました TextBox1.AppendText("Hello!!") PictureBox1.Image = Image.FromFile(File1) 上記のコードでいう「AppendText」はメソッド「Image」はプロパティ だと思うのですが、 1:クラス名(orインスタンス)+メソッド 2:何らかの値+メソッド 3:特殊なパターン(MsgBoxなど) これは上記のどのパターンにあてはまるのでしょうか (TextBoxやPictureBoxはクラスとして扱われる・・・?) また、インスタンス化しないと使用できないもの、またその逆の判別が中々付きません 共有・非共有メンバと書かれていたりするのですが、明確な意味がわからず頭を悩ませています 例として、 Graphicsのdrawlineを使用する時にはインスタンス化しなくても描画が可能であるのに、乱数を範囲指定で出したい時にはインスタンス化が必要 など、どちらも値を指定して・・・という内容なのに・・と思ってしまいます 文がわかりにくく、質問の内容も幼稚で申し訳ありませんが、 馴染みのない私にとっては難関なので是非とも 質問内容も含め、クラス(インスタンス)、メソッド、プロパティについてご教授ください、よろしくお願い致します

  • ActiveXコントロールにオブジェクトの追加?

    VB6SP6です。 ActiveXコントロールにはプロパティ・メソッド・イベントが設定できることがわかりました。 オブジェクトの追加ってできますか? 使用する側から 通常は「ActiveX名.メソッド」とするところを 「ActiveX名.オブジェクト名.メソッド」というようにメソッドを呼び出したいのです。 へんちくりんな質問でしたらすみません。 どなたかわかる方いらっしゃいましたらよろしくお願いいたします!

  • Ajaxのsendメソッドについて

    Webプログラミング初心者です。 Ajaxにおいて、XMLHttpRequestオブジェクトのプロパティであるsendおよびopenについてお聞きします、GETを使う時にopenメソッドの引数に送信すべき情報を「?キー名=値」の形式でURLの末尾に指定するのは理解できるのですが(結果として表示されるページのURLにその値が含まれているので。)、なぜPOSTを使う時にsendメソッドの引数に「?キー名=値」の情報を入れる必要があるのかわかりません。 GETの時とは違い「?キー名=値」の情報の使い道がない気がするのですが…