ソフト・テクノロジーのWeb教室:JavaScriptのthisキーワード

VaRの人物= { 
  firstNameの: "ビル" 
  lastNameの: "ゲート" 
  ID: 678 
  のfullName:関数(){
     戻り 、この .firstName + "" + この.lastNameと、
  } 
}。

 

これは何ということでしょうか?

JavaScriptは、  このキーワードは、それが属するオブジェクトを参照します。

それは、その使用位置に応じて、異なる値があります。

  • この方法では、これはオブジェクトの所有者を指します。
  • 個々の場合は、これはグローバルオブジェクトを指します。
  • 機能では、これはグローバルオブジェクトを指します。
  • 機能では、厳密モードでは、これは未定義です。
  • イベントでは、このイベントを受信する要素を指します。

以下のような  ()の呼び出しと  適用()任意のオブジェクトに、この基準における方法であってもよいです。

この方法

オブジェクトのメソッドでは、これは方法を指す「所有者」。

トップページの例では、人物オブジェクト、この手段。

人は、オブジェクトのfullNameメソッドの所有者です。

fullName:関数(){
   戻り 、この .firstName + "" + この.lastNameと、
}

 

これを分離

単独で使用する場合、グローバルオブジェクトの所有者は、ので、  これはグローバルオブジェクトを意味します。

ブラウザウィンドウで、グローバルオブジェクトである  [オブジェクトウィンドウ]:

VARのx = この ;

 

単独で使用する場合、厳密なモードでは、その後、  このグローバルオブジェクトを指す  [オブジェクトウィンドウ]:

「厳格な使用」VARのx = この ;

 

この機能(デフォルト)

JavaScript関数には、デフォルトの結合機能の所有者  これ。

したがって、関数に、これはグローバルオブジェクトを指す  [オブジェクトウィンドウ]。

関数MyFunctionを(){
   戻り 、これを
}

 

この(strictモード)の機能

JavaScriptのstrictモードでは、デフォルトのバインディングはできません。

機能で使用する場合したがって、厳密モードでは、これが定義されていない(不定)。

「厳格な使用」関数MyFunctionを(){
   戻り 、これを
}

 

このイベントハンドラ

HTMLイベントハンドラでは、これは、このイベントのHTML要素の受信機を参照します。

<ボタンのonclick = "this.style.display = 'なし'"> 
  私を削除します!
</ button>の

 

オブジェクトのメソッドをバインディング

この例では、これは、人物オブジェクトは(人物オブジェクトは、関数の「所有者」)です。

VaRの人= { 
  firstNameの: "ビル" 
  lastNameの: "ゲイツ" 
  ID: 678 
  のMyFunction:機能(){
     返す これを
  } 
}。

 

VaRの人物= { 
  firstNameの: "ビル" 
  lastNameの: "ゲート" 
  ID: 678 
  のfullName:関数(){
     戻り 、この .firstName + "" + この.lastNameと、
  } 
}。

 

言い換えれば、firstNameのプロパティは、オブジェクトのこの(人)を意味this.firstName。

明示的な機能バインディング

()の呼び出しと  適用()メソッドは、事前定義されたJavaScriptメソッドです。

彼らは、パラメータとして、別のオブジェクトのオブジェクトメソッドを呼び出すために使用することができます。

あなたはおよそ後でこのチュートリアルで読むことができます  ()の呼び出しと  (適用)以上です。

次の例では、person1.fullName PERSON2呼び出しパラメータとして使用される場合、この参照PERSON2れ、それは方法PERSON1であっても。

VAR PERSON1 = { 
  のfullName:関数(){
     戻り 、この .firstName + "" + この.lastNameと、
  } 
} 
VAR PERSON2 = { 
  firstNameの: "ビル" 
  lastNameの: "ゲート" 
} 
person1.fullName.call(PERSON2)。  // 会返回"ビル・ゲイツ"

 

おすすめ

転載: www.cnblogs.com/sysoft/p/12058164.html