- ベストアンサー
[初歩]JavaScriptのプロパティについて
- JavaScriptの学習中に疑問が生じました。プロパティには3種類ありますが、それぞれの違いを教えてください。
- プロパティには型に対するプロパティ、プロトタイプに対するプロパティ、インスタンスに対するプロパティがあります。それぞれの特徴について教えてください。
- プロトタイプとインスタンスのプロパティで同じ名前のプロパティがある場合、どちらのプロパティが優先されるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> function Rectangle(){}; > Recangle.p1 = 10; これはRectangleという関数オブジェクトに プロパティを追加してるだけです。 > var r = new Rectangle(); > r.prototype.p2 = 30; 結果的には同じだけど、普通は | Rectangle.prototype.p2 = 30; の様にしないかな。newする必要もなくなりますし。 プロパティが何種類もあると言うよりは、 参照の時prototypeというプロパティがちょっと特別扱いされるだけ。
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1415)
プロパティは3種類ではありません。 オブジェクトには沢山のプロパティがあり、オブジェクト毎に 名前も用途も違います。ただ、プロパティのデータ型という意味では 数値、文字列、真偽値、オブジェクトくらいでしょうか。といっても 「オブジェクト」というのが「何でもあり」なんですけどね。
お礼
回答ありがとうございます。 先に回答していただいた方のお礼で書いたのですが、私が注目している、気にかけているのは、1のタイプであれば、型から出ないと呼び出せないタイプ。例えばNumber.NEGATIVE_INFINITYなどのようなもの。 2のタイプですと、Rectangleから生成されたインスタンスのすべてで設定されるもの(ただし3を使って同名のプロパティをインスタンスに設定されると隠される)。 3のタイプは、インスタンスに対してつけられたプロパティで、同じRectangleから生成されたほかのインスタンスには影響しないプロパティ。 という意味での3タイプがあるのかなと思っております。 この3種類でいいのか、もっとほかにあるのかなという意味での質問でした。 例えば r.p,widthのようなオブジェクトのオブジェクトのプロパティというようなタイプというのは上記の3、または2に当てはまると考えております。 よろしくお願いいたします。
- yambejp
- ベストアンサー率51% (3827/7415)
javascriptにおいては、全てのものがオブジェクトとして取り扱われます。 そのオブジェクトの多くはプロパティをもつことができます。 そう言う意味では例示された3タイプにしばられることはないと思います。
お礼
回答ありがとうございます。 私が例に挙げた3タイプ以外ですとどういうものがあるのでしょうか。 できましたら、そこを教えていただけたらなと思います。 もしかしたら私の説明不足だったかもしれませんが、私が注目している、気にかけているのは、1のタイプであれば、型からでないと呼び出せないタイプ。例えばNumber.NEGATIVE_INFINITYなどのようなもの。 2のタイプですと、Rectangleから生成されたインスタンスのすべてで設定されるもの(ただし3を使って同名のプロパティをインスタンスに設定されると隠される)。 3のタイプは、インスタンスに対してつけられたプロパティで、同じRectangleから生成されたほかのインスタンスには影響しないプロパティ。 という意味での3タイプがあるのかなと思っております。 この3種類でいいのか、もっとほかにあるのかなという意味での質問でした。 例えば r.p,widthのようなオブジェクトのオブジェクトのプロパティというようなタイプというのは上記の3、または2に当てはまると考えております。
お礼
回答ありがとうございます。 一応、自分が理解しているタイプがあるということだと理解しました。 ありがとうございます。