• ベストアンサー

オブジェクト型とプリミティブ型について

オブジェクト型とプリミティブ型について プリミティブ型は Javascriptにおけるプリミティブ型とは、下記は値そのものが入っている。 * 数値型 * 文字列型 * ブーリアン型 * null型 * undefined型 上記5つのどれかその物が入っている オブジェクト型は配列がこれなのはわかるのですがオブジェクトもオブジェクト型なのでしょうか?他にもありますか? こちらや値そのものが入っておらず、アドレスのみが入っているのですよね?

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

  • ベストアンサー
回答No.6

>私が見た情報にはアドレスが入っていて、参照先に値があるとありました。 JavaScriptにおいては(以前の添付画像のように)「参照先に値(インスタンス)がある」訳です。 >ポインタがアドレスの事なんですかね。 そうです。 >またオブジェクトは基本型ではなく参照型であるのは正しいのですね JavaScriptにおいては、そうです。

その他の回答 (5)

回答No.5

>回答No.3 amanojaku1 >var hoge = new HelloObj(); // 「HelloObj」を「new」してインスタンスを生成し「hoge」変数に代入。 訂正です。 var hoge = new HelloObj(); // 「HelloObj」コンストラクターを「new」して「HelloObj」インスタンスを生成し「hoge」変数に代入。 >hoge.show(); // 「hoge」変数に代入された「HelloObj」インスタンスの「show()」メソッドを呼び出し。 注.『「HelloObj」コンストラクター』を「new」して生成された『「HelloObj」インスタンス』が「hoge」変数に代入されているので「hoge」変数で「show()」メソッドを呼び出す事ができます。

回答No.4

>回答No.3 amanojaku1 なんか分かりにくい説明でした、ざっくりと言うと参照型とは(ポインターで)「何か」を"参照"してるから参照型と言う訳です。 (JavaScriptの)オブジェクト(配列も含む)は参照型です、コンストラクターを「new」してインスタンスが生成されますが、そのインスタンスは画像のようにポインターにより そのインスタンスが"参照"しされています。

回答No.3

>オブジェクトは配列と違ってアドレスのみが入っているわけではないのですか? 画像のようにポインターがインスタンスを参照しています。 >でも参照型ではあるのですよね? 参照型とは(ポインターで)「何か」を"参照"してるから参照型と言う訳です。 配列も同様に参照型です、下記は「Array()」オブジェクト?(コンストラクター?)を「new」して配列インスタンスを生成し、「hoge」変数に配列インスタンスを代入しています。 配列も参照型なのでポインターが配列インスタンスを参照しています。 var hoge = new Array(); (JavaScriptの古いシンタックスのオブジェクト指向プログラミングは非常に分かりにくく)JavaScriptの古いシンタックスにはクラスはありませんでした、とすると「Array()」はクラスではなくコンストラクターと言うことになるハズです。 本来コンストラクターをオブジェクトと言うのは不適切なのですが、JavaScriptの古いシンタックスのコンストラクターをオブジェクトと言うのが普及しているようです(あくまでも古いシンタックスの場合です)。 // 古いシンタックスのコンストラクター定義(注.「show」メソッド定義も含まれる) function HelloObj() { this.show = function() { var NowDate = new Date(); var NowHour = NowDate.getHours(); var NowMin = NowDate.getMinutes(); var NowSec = NowDate.getSeconds(); alert(NowHour+':'+NowMin+':'+NowSec+':'); } } var hoge = new HelloObj(); // 「HelloObj」を「new」してインスタンスを生成し「hoge」変数に代入。 hoge.show(); // 「hoge」変数に代入された「HelloObj」インスタンスの「show()」メソッドを呼び出し。 // 通常の関数定義。 function Hello() { var NowDate = new Date(); var NowHour = NowDate.getHours(); var NowMin = NowDate.getMinutes(); var NowSec = NowDate.getSeconds(); alert(NowHour+':'+NowMin+':'+NowSec+':'); } Hello(); // 通常の関数呼び出し。

htmlcss123
質問者

お礼

私が見た情報にはアドレスが入っていて、参照先に値があるとありました。 ポインタがアドレスの事なんですかね。 またオブジェクトは基本型ではなく参照型であるのは正しいのですね

回答No.2

>* 数値型 >* 文字列型 >* ブーリアン型 >* null型 >* undefined型 >以外はすべて参照型なのでアドレスのみが入っているのですね。 プリミティブ型に新しく「Symbol」型が追加されたようです。 >すると、オブジェクトもアドレスのみが入っているのですね。 違います、ポインターがインスタンスを参照しています(添付画像参照) >クラスもですか? クラスはオブジェクトではなく設計図です、クラス(設計図)を new してオブジェクト(実態:インスタンス)を作成します。

htmlcss123
質問者

お礼

>>> ポインターがインスタンスを参照 という部分が初心者にはわからないのですが、 オブジェクトは配列と違ってアドレスのみが入っているわけではないのですか? でも参照型ではあるのですよね?

回答No.1

JavaScriptのデータ型について http://www.o2-m.com/wordpress2/2016/09/24/javascript%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/ >■ プリミティブ型とオブジェクト型 >JavaScriptのデータ型(Type)は、プリミティブ型とオブジェクト型に大別されます。 >プリミティブ型 数値・文字列・論理値・null・undefined >オブジェクト型 その他オブジェクト >さて、オブジェクトとはプロパティ(値)とメソッド(操作)の集まりです。たとえば、JavaScriptでは配列はArrayオブジェクトです。 >それに対してプリミティブ型とはプロパティとメソッドを持たない単純なデータです。たとえば数値は「1」「3.14」といった数、文字列は「’Hello’」や「’こんにちは’」といった一連の文字、論理値は「true(真)」「false(偽)」のどちらかの値です。 >■ ラッパーオブジェクト >なお、数値、文字列、論理値といったプリミティブ型をオブジェクトとして扱うデータ型が用意されています。それれらの型をラッパーオブジェクトと呼びます。 >Number >String >Boolean >これらのオブジェクトを明示的に生成するにはコンストラクタを使用します。コンストラクタの名前はオブジェクト名と同じです。 >■ ラッパーオブジェクトへの変換は自動で行われる >プリミティブ型はプロパティとメソッドを持たないと説明しましたが、実際にはプリミティブ型の値のプロパティやメソッドにアクセスできます。次の例は、文字列に対して、String型のlengthプロパティ、およびcharAt()メソッドにアクセスしています。 >実は、プリミティブ型の値に対して、対応するラッパーオブジェクト(文字列の場合にはString型)のプロパティやメソッドにアクセスすると、一時的にラッパーオブジェクトに変換されるのです。 ざっくりと言うと「JavaScript」ではプリミティブ型以外は、全て「オブジェクト型」と考えて良いでしょう(あくまでも「JavaScript」での話)。 また、「JavaScript」では「オブジェクト型=参照型(ポインター型)」です(あくまでも「JavaScript」での話)。 ちなみにプリミティブ型に新しく「Symbol」型も追加されたようです。

htmlcss123
質問者

お礼

* 数値型 * 文字列型 * ブーリアン型 * null型 * undefined型 以外はすべて参照型なのでアドレスのみが入っているのですね。 すると、オブジェクトもアドレスのみが入っているのですね。 クラスもですか?

関連するQ&A

  • Javascriptで コピー・参照の事例?

    値と参照の動作がわからないのですが、 func copy(mono) { var x = mono; } の時、xは monoのコピーでしょうか?参照でしょうか? monoは オブジェクト 配列 文字列 数値 ture, false null それぞれについても知りたいです。 このように、値と参照の区別しなければいけない問題は他にあるでしょうか?

  • JavaScriptのnullはいつ使う?

    JavaScriptにはnullという値がありますが、いつ使うのでしょうか。 値が定義されていない変数やプロパティには、undefinedが入っていますし、 undefinedを代入することもできます。 C#でのnullの使い方と同じように、undefinedが使えちゃってます。 ではnullはいつ使うのでしょう? undefinedではなくnullでなければダメなケースって何がありますか?

  • Vb .net オブジェクトの属性に応じて値を変え

    Vb .net オブジェクトの属性に応じて値を文字列に加工して渡したいです。 DataTableのセルやStringやIntegerやdateなどの値が渡されることを想定しています。 postgresqlのWhere句に渡す事を想定しています。 strTmp = TestTest(Object1) strSql = "Where item1 = " & strTmp <内容> ・オブジェクトの値がDBNull.Valueなら文字列で"null" ・数字属性の場合、  文字列に変換して数字を渡す ・日付属性の場合、  文字列に変換して値を渡す ・文字属性の場合、  シングルクオートした値を渡す。 ・上記以外は文字列で"null"を渡す。 <書きかけ> function TestTest(byref p01 Object) As String dim aaaa as object dim bbbb as string if aaaa is DBNull.Value then bbbb = "null" else Select Case aaaa 属性 Case 数字の場合 bbbb = aaaa.toString Case 文字の場合 bbbb = "'" & aaaa.toString & "'" Case 日付の場合 bbbb = "'" & to_timestamp('" & Format( aaaa, "yyyy.mm.dd hh:nn:ss" ) & "', 'YYYY.MM.DD HH24:MI:SS')" Case Else bbbb = "null" End Select end if Return (bbbb) end function <メモ> ・属性の判定方法が分かりません。 ・何か見落としている事はありませんか? 以上、よろしくお願いします。

  • eval は、どのオブジェクトにも関連付けがない?

    ・リンク先で下記のように記載されているのですが、どういう意味でしょうか? ・Webブラウザ上だと、グローバルオブジェクトである window に所属しているオブジェクトだと思うのですが? >eval はトップレベル関数であり、どのオブジェクトにも関連付けられていません https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval ・また、下記のような記述もあるのですが、「特定のオブジェクトを参照すること無く」とはどういう意味でしょか? >概要 >特定のオブジェクトを参照すること無く JavaScript コードの文字列を評価します。

  • 「オブジェクト」について質問

    javaの参考書に、オブジェクトについて、「データとそれを操作する機能をひとまとまりにしたものをオブジェクトといいますが、」と書いてありました。 質問1:抽象的過ぎて、上記の解説がわたしにはよく理解できませんでした。 初心者の私にも理解できるように、身近な具体例を織り交ぜてご説明頂けましたら幸いです。 ^ 質問2:「データとそれを操作する機能をひとまとまり」と書いてありますが、これを配列に例えると、 例えば、int [] n ={3,5,7};という配列があったとします。これに int data=n[0];のように配列要素へのアクセスを行うと、配列は自身の持ってるデータを渡しますよ?これはまさしく「配列はデータを持っていて(上記例ではint型の数値を持っていて)、それを操作する機能(上記例では配列の0番目の要素を変数dataに引き渡す)を持っている」こういうことですか?

    • ベストアンサー
    • Java
  • json.jsのparseJSONメソッドについて

    json.jsのparseJSONメソッドで読み込み Cをはずして、 obj.Aは「私」 obj.Bは「2038」 でアクセスできますが、 Cが間違っているためかJavascriptが動作しません。 JSONは文字列、数値、配列などオブジェクトを値として持てる?はずなのに、エラーになるのは何が原因でしょうか? { "A" : "私", "B" : 2038, "C" : function(){document.bgColor = 'yellow';} }

  • undefinedかnullかどう区別できますか?

    JavaScript の教科書に下記のように記載があったのですが、 >>> ページからアンカータグを取得するgetAnchorという関数があったとします。 その際、アンカータグが見つからなかったならば、何を返すべきでしょうか。undefined(未定義)は不自然です。 今度は「該当する値がなかった(=空であった)」という値を、意図して伝えようとしているので、nullを返すべきです。 関数で値が返されなかった場合はundefinedと聞いたのですが上記はそれに該当するように私は思ってしまうのですが、なぜ違うかわかりますか? 関数で値が返されなかった場合とはalert()のように引数がなかった場合という意味でしょうか? それともretunr 変数名などのreturnがない場合という意味でしょうか?

  • オブジェクトがわからない

    オブジェクトが設計図やそのによって作られた物であるというのはわかったのですが、 下記のように深くなると初心者には難しくてわかりません。 初心者にもわかるように解説していただけるとありがたいです。 >>> オブジェクトとは、単に名前がついた入れ物の集合ではありません。オブジェクト自体が1つのモノであり、中に含まれる要素は、このモノの特性や動作を表すために存在します。要は、(連想配列ではなく)「オブジェクト」という言葉を使う場合には、主役は個々の要素ではなく、オブジェクト(モノ)そのものであるといったらよいでしょうか。 JS本格入門より

  • vbaプログラム

    excelの列に文字列があり、その文字列をvbaを使って他のシートに貼り付けます。 空白になるまでの文字列をコピーして貼り付けます。for文を使って、null-1までコピーします。 配列を使って、そのnull-1までの添え字の値を取得したいのですが、どのようなプログラムを作ればいいのでしょうか? sheet1のA5以降をコピーして(空白になるまで),それをsheet2のA5以降にコピーして、その列数を反映させたくて。。。 for文と配列を使いたいのですが、よろしくお願い致します。

  • フレーム間オブジェクト参照

    フレームを使ったページで、 親フレームの中に、A,Bという2つのフレームを作り、 直接AのURLを入れても、エラーを出したいのですが、 どういう作りをしたら良いのでしょうか? 親フレームから見ないとエラー(警告ページに飛ぶなど) にしたいのです。 フレームAから、 フレームB内のテキストボックスを参照できるか否かの ような形でフレームBの存在を知ろうと思ったのですが、 Nullかオブジェクトがないとか言われるので処理が中断 してしまいます。 JavaScriptでオブジェクトの値を参照した時に、オブジェクト がないとかの判断ができるプロパティ等があればいいのですが。 JavaScriptでできますでしょうか?

専門家に質問してみよう