• ベストアンサー

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

オブジェクト型とプリミティブ型について プリミティブ型は 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