命令
 
NE3 NE4 NE6 IE3 IE4 IE5 IE6 i
 オブジェクト自身 
this

"this"は自分自身のオブジェクトを指すものなんだ。
オブジェクトの情報に対してアクセスする時には、通常オブジェクト名を使ってアクセスするよね。
(※この辺りは、DHTML講座で少し解説している。)
けれど、自分自身の情報にアクセスをしたいときにはわざわざオブジェクト名を使わなくても、"this"
というものを使えばいいんだ。
例えて言うと、自分の事は名前で呼ばないで「私」とか「僕」とか言うよね。
それと同じように、オブジェクトは自分自身のことを"this"と呼ぶんだ。
ここで気をつけて欲しいのは、みんなが「私」と言っても、それはそれぞれ私は違う人を指しているよね。
(隣の人もその隣の人も、みんな自分のことを「私」と呼ぶ。だから「私」は「私」でも人それぞれによって指しているものは違う。)
同じように、"this"も全て同じオブジェクトを指すわけではないからね。
あくまで、その時に焦点を当てているオブジェクトのことなんだよ。
じゃあ、少し難しいけれどサンプルを見てみよう。

SOURCE
<HTML>
<HEAD>
<TITLE>オブジェクト自身</TITLE>
</HEAD>
<BODY>
</BODY>
<SCRIPT language="JavaScript">
<!--

//関数
function myObj(){
  this.color = "red";      //自分自身の"color"という性質に"red"を代入する。
  this.name = "赤";      //自分自身の"name"という性質に"赤"を代入する。
}

//オブジェクトを作る
obj = new myObj();        //オブジェクトの作成(コピー)
document.write(obj.color+" = "+obj.name);

//-->
</SCRIPT>
</HTML>

少し難しいけれど、

    obj = new myObj();

という一文は関数を呼び出す命令になっているので。
関数は、

    function myObj(){
         this.color = "red";
       this.name = "赤";
    }

となるよね。
つまりこの時点で、"this=myObj()"なので関数内を書き直すと、

    myObj().color = "red"            ←thisはmyObj(自分自身)なので。通常はこのような書き方はしない。
    myObj().name = "赤"            ←thisはmyObj(自分自身)なので。通常はこのような書き方はしない。

だよね。
ここで、

    obj = new myObj(3);

をするというのは、今の"myObj"をそのまま"obj"にそのままコピーするということなんだ。
だから、性質も同様にコピーされるので、

    myObj.color    ⇒    obj.color
    myObj.name    ⇒    obj.name

となるんだ。

 RESULT

 


リファレンス目次