プロが教えるわが家の防犯対策術!

いつも拝見させていただいています。

現在JavaScriptを学習しているのですが、教えていただきたいことがあります。
プロパティなのですが、私の中では3種類あると思っています。
1)型に対するプロパティ
function Rectangle(){};
Recangle.p1 = 10;

2)プロトタイプに対するプロパティ
var r = new Rectangle();
r.prototype.p2 = 30;

3)インスタンスに対するプロパティ
var r = new Rectangle();
r.p3 = 50;

こんな感じであると思っていますが、あっていますでしょうか?
2と3の場合ではプロパティ名が同じであれば2の方が隠されると思っています。

ここが間違っているよ、とか、全然ちがうよとか、それでいいよとか、何かしらのお返事お待ちしております。
よろしくお願いいたします。

A 回答 (3件)

> function Rectangle(){};


> Recangle.p1 = 10;
これはRectangleという関数オブジェクトに
プロパティを追加してるだけです。

> var r = new Rectangle();
> r.prototype.p2 = 30;
結果的には同じだけど、普通は
| Rectangle.prototype.p2 = 30;
の様にしないかな。newする必要もなくなりますし。


プロパティが何種類もあると言うよりは、
参照の時prototypeというプロパティがちょっと特別扱いされるだけ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

一応、自分が理解しているタイプがあるということだと理解しました。
ありがとうございます。

お礼日時:2008/11/21 18:11

プロパティは3種類ではありません。


オブジェクトには沢山のプロパティがあり、オブジェクト毎に
名前も用途も違います。ただ、プロパティのデータ型という意味では
数値、文字列、真偽値、オブジェクトくらいでしょうか。といっても
「オブジェクト」というのが「何でもあり」なんですけどね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

先に回答していただいた方のお礼で書いたのですが、私が注目している、気にかけているのは、1のタイプであれば、型から出ないと呼び出せないタイプ。例えばNumber.NEGATIVE_INFINITYなどのようなもの。
2のタイプですと、Rectangleから生成されたインスタンスのすべてで設定されるもの(ただし3を使って同名のプロパティをインスタンスに設定されると隠される)。
3のタイプは、インスタンスに対してつけられたプロパティで、同じRectangleから生成されたほかのインスタンスには影響しないプロパティ。
という意味での3タイプがあるのかなと思っております。
この3種類でいいのか、もっとほかにあるのかなという意味での質問でした。
例えば
r.p,widthのようなオブジェクトのオブジェクトのプロパティというようなタイプというのは上記の3、または2に当てはまると考えております。

よろしくお願いいたします。

お礼日時:2008/11/14 18:10

javascriptにおいては、全てのものがオブジェクトとして取り扱われます。


そのオブジェクトの多くはプロパティをもつことができます。
そう言う意味では例示された3タイプにしばられることはないと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

私が例に挙げた3タイプ以外ですとどういうものがあるのでしょうか。
できましたら、そこを教えていただけたらなと思います。
もしかしたら私の説明不足だったかもしれませんが、私が注目している、気にかけているのは、1のタイプであれば、型からでないと呼び出せないタイプ。例えばNumber.NEGATIVE_INFINITYなどのようなもの。
2のタイプですと、Rectangleから生成されたインスタンスのすべてで設定されるもの(ただし3を使って同名のプロパティをインスタンスに設定されると隠される)。
3のタイプは、インスタンスに対してつけられたプロパティで、同じRectangleから生成されたほかのインスタンスには影響しないプロパティ。
という意味での3タイプがあるのかなと思っております。
この3種類でいいのか、もっとほかにあるのかなという意味での質問でした。
例えば
r.p,widthのようなオブジェクトのオブジェクトのプロパティというようなタイプというのは上記の3、または2に当てはまると考えております。

お礼日時:2008/11/14 18:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!