WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JSのオブジェクトついて

javaka [WriteDate : Mon Jun 25 20:54:12 2001]

たとえば、以下のようなオブジェクトがあった時に、

function naviUA() {
    naviUA.str = navigator.userAgent;
}
new naviUA();

以下は、上と等価ですか

function naviUA() {
    naviUA.str = navigator.userAgent;
}
naviUA = new naviUA();

また、オブジェクト名(naviUA)と変数名(naviUA.strのnaviUA)
は同じですが、意味がありますか?

とにかく、わからないところは、代入なしのnew演算子の使い方と
変数名をオブジェクト名と同じにするとグローバル変数みたいにアクセスできる?

以上、よろしくお願いいたします。


!!! [WriteDate : Tue Jun 26 13:07:46 2001]

>以下は、上と等価ですか
答えは、No です。やってみればわかります。
実は、よくわかりませんが、違うことは確かです。

>代入なしのnew演算子の使い方
とにかく、new演算子はオブジェクトの生成で、
代入とは、切り離して考えましょう。

>変数名をオブジェクト名と同じにするとグローバル変数みたいにアクセスできる

script要素直下の書かれた関数は、実はグローバル変数になります。


ween [WriteDate : Wed Jun 27 08:47:23 2001]

function naviUA() { naviUA.str = navigator.userAgent; }

の時点で、 naviUA は Function オブジェクトです。

new naviUA();

で、 naviUA() を実行してオブジェクトを生成します。
コンストラクタ内で、生成されるオブジェクトは this で表されますが
naviUA() 中では this について何のプロパティも記述してないので、単に空のオブジェクトが生成されます。
この文を評価する分には naviUA は str というプロパティを持つ Function オブジェクトです。

naviUA = new naviUA();

この文が評価されると、naviUA に new naviUA() の戻り値(空のオブジェクト)が代入されます。
naviUA は Object オブジェクトになり、コンストラクタではなくなるので
これ以降 new naviUA() を実行しようとするとエラーになります。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World