JSオブジェクト基本操作
2380 ワード
1.this指針についての理解
thisポインタはオブジェクトプログラム設計に向けた重要な概念であり、現在実行されているオブジェクトを表しています.オブジェクトを実現する方法では、オブジェクト自体の参照は、thisポインタを使用して得ることができます.従来の意味での対象に向けた言語とは異なり、JavaScriptにおけるthisポインタは動的変数であり、一つの方法内のthisポインタは常にこの方法を定義する対象を指すのではなく、前のセクションで関数を説明するapplyとcall方法においてすでにこのような例があった.みなさんが理解しやすいように、次の例を見てみましょう.
このことから、JavaScriptにおけるthisポインタは、現在この関数を実行しているオブジェクトを示す動的変化変数である.Scriptのオブジェクトの本質は、thisポインタの性質によってもよく理解されます.オブジェクトは、1つまたは複数の属性(方法)からなるセットです.各集合要素は、1つのセットだけに属することができるのではなく、動的に複数のセットに属することができる.このように、一つの方法(集合要素)は、誰によって呼び出され、誰に向けられていますか?実際には、前述のappy方法とcall方法は、thisポインタの値を強制的に変更することにより、パラメータによって指定されたオブジェクトにthisポインタを向けることにより、オブジェクトの一つの方法を別のオブジェクトとして動作させる効果があります.
同時に、各オブジェクトのセットの要素(すなわち属性または方法)も独立した部分であり、大域関数とオブジェクト方法として定義された関数との間には、大域関数と変数をwindowオブジェクトの方法と属性として見ることができるからである.newオペレータを使用してオブジェクトを操作する方法でオブジェクトを返すこともできます.このようなオブジェクトの方法は、クラスとして定義されています.この中のthisポインタは、新規に作成されたオブジェクトを指します.後には、オブジェクト名が名前空間として機能します.これはJavaScriptを使ってオブジェクト指向プログラミングを行うテクニックです.たとえば:
オブジェクト属性(方法)の動的変化特性のため、オブジェクトの2つの属性(方法)間の相互参照は、thisポインタを介して行われる必要がありますが、従来の言語では、thisキーワードは省略されます.しかし、上記の例では、
2.オブジェクトの属性をすべて取得する
thisポインタはオブジェクトプログラム設計に向けた重要な概念であり、現在実行されているオブジェクトを表しています.オブジェクトを実現する方法では、オブジェクト自体の参照は、thisポインタを使用して得ることができます.従来の意味での対象に向けた言語とは異なり、JavaScriptにおけるthisポインタは動的変数であり、一つの方法内のthisポインタは常にこの方法を定義する対象を指すのではなく、前のセクションで関数を説明するapplyとcall方法においてすでにこのような例があった.みなさんが理解しやすいように、次の例を見てみましょう.
<script language="JavaScript" type="text/javascript">
<!--
//
var obj1=new Object();
var obj2=new Object();
// p, 1 2
obj1.p=1;
obj2.p=2;
// obj1 , p
obj1.getP=function(){
alert(this.p); // this obj1
}
// obj1 getP
obj1.getP();
// obj2 getP obj1 getP
obj2.getP=obj1.getP;
// obj2 getP
obj2.getP();
//-->
</script>
コードの実行結果から、ダイアログ1と2がそれぞれ表示されます.このことから,getP関数は一回だけ定義されており,異なる場合に実行され,異なる運転結果を示しており,これはthisポインタの変化によって決定される.Obj 1のgetP方法では、thisはObj 1のオブジェクトを指し、Obj 2のgetP方法では、thisはObj 2のオブジェクトを指し、thisポインタを介して両方のオブジェクトが持つ属性pを参照している.このことから、JavaScriptにおけるthisポインタは、現在この関数を実行しているオブジェクトを示す動的変化変数である.Scriptのオブジェクトの本質は、thisポインタの性質によってもよく理解されます.オブジェクトは、1つまたは複数の属性(方法)からなるセットです.各集合要素は、1つのセットだけに属することができるのではなく、動的に複数のセットに属することができる.このように、一つの方法(集合要素)は、誰によって呼び出され、誰に向けられていますか?実際には、前述のappy方法とcall方法は、thisポインタの値を強制的に変更することにより、パラメータによって指定されたオブジェクトにthisポインタを向けることにより、オブジェクトの一つの方法を別のオブジェクトとして動作させる効果があります.
同時に、各オブジェクトのセットの要素(すなわち属性または方法)も独立した部分であり、大域関数とオブジェクト方法として定義された関数との間には、大域関数と変数をwindowオブジェクトの方法と属性として見ることができるからである.newオペレータを使用してオブジェクトを操作する方法でオブジェクトを返すこともできます.このようなオブジェクトの方法は、クラスとして定義されています.この中のthisポインタは、新規に作成されたオブジェクトを指します.後には、オブジェクト名が名前空間として機能します.これはJavaScriptを使ってオブジェクト指向プログラミングを行うテクニックです.たとえば:
var namespace1=new Object();
namespace1.class1=function(){
//
}
var obj1=new namespace1.class1();
ここではnamespace 1を生命空間として見ることができます.オブジェクト属性(方法)の動的変化特性のため、オブジェクトの2つの属性(方法)間の相互参照は、thisポインタを介して行われる必要がありますが、従来の言語では、thisキーワードは省略されます.しかし、上記の例では、
obj1.getP=function(){
alert(this.p); // this obj1
}
ここのthisキーワードは省略できないもので、つまりalert(p)とは書き込めないものです.これにより、getP関数は、Obj 1の属性ではなく、コンテキスト環境のp変数を参照するようになる.2.オブジェクトの属性をすべて取得する
for(attrubute in deskTop)
{
alert(attrubute);
}