これ
これはJavaScriptのキーワードです。この値は、関数の使用に応じて変化します。しかし、常に原則があります。つまり、これは関数を呼び出すオブジェクトを指します。
1。定義
1.これは、関数内の特別なオブジェクト(またはこの参照)です。関数が実行される環境オブジェクトを指します。
2.このリファレンスは、JavaScriptコードでいつでも使用できる読み取り専用変数です。この参照参照(ポイント)は、コードコンテキストに従って参照オブジェクトを自動的に変更する特性を持つオブジェクトです。その引用ルールは次のとおりです。
•最も外側のコードでは、このリファレンスはグローバルオブジェクトを指します。
•関数内では、この参照は関数の呼び出し方によって異なります。次のように
1)コンストラクター呼び出し - このリファレンスは生成されたオブジェクトを指します
2)メソッド通話 - このリファレンスは受信機オブジェクトを指します
3)申請または呼び出し - このリファレンスは、適用または呼び出しのパラメーターで指定されたオブジェクトを指します
4)他の呼び出し方法 - この参照はグローバルオブジェクトを指します
2。上記の関連するオンライン情報に基づいて、このオブジェクトの使用状況(引用)は次のように要約されています。
JavaScriptは動的な言語であり、このキーワードが実行された場合にのみ、決定できます。したがって、これは常に発信者、つまり「コールオブジェクト」への参照を指します。それを簡単に言えば、どのオブジェクトと呼ばれる方法が属しますか、これはそのオブジェクトを指します。関数呼び出しの方法に応じて、これはグローバルオブジェクト、現在のオブジェクト、またはその他のオブジェクトを指すことができます。
1。グローバル関数呼び出し、これはグローバル関数でグローバルオブジェクトウィンドウを指します。 (機能コールモード)
//コードリスト1 <スクリプトタイプ= "text/javascript"> var message = "これはウィンドウ"; //この文は関数の外側と関数関数func(){if(this == window){alert( "this == window");アラート(メッセージ); this.methoda = function(){alert( "I'm a function");}}} func(); // funcメソッドが呼び出されない場合、その中で定義されている属性またはメソッドはmethoda(); </script>によって取得されませんfunc()のcall of func()の結果は、==ウィンドウであり、これはウィンドウにあります
Methoda()への呼び出しの結果私は関数です
2。コンストラクターコール、つまり、新しいものを使用してオブジェクトをインスタンス化すると、コンストラクターを介して生成されたオブジェクトを指します。 (コンストラクターコールモード)
コードリスト2
<script type = "text/javascript"> function func(){if(this == window){alert( "this == window");} elsert( "this!= window");} this.fielda = "I'm a field"; alert(this);} var obj = new func(); alert(obj.fielda); //これはオブジェクトobj </script>を指します3.オブジェクトメソッドを呼び出すと、これは現在のオブジェクトを指します。関数がオブジェクトのメソッドとして使用または割り当てられている限り、関数は、関数内のこれはオブジェクト自体への参照です。また、これは通常のオブジェクトで記述されていることを理解することができ、これはオブジェクト自体を指します。 (メソッドコールモード)
(方法の定義:オブジェクトプロパティとしての関数はメソッドと呼ばれます)
//コードリスト3 <スクリプトタイプ= "text/javascript"> var obj = {x:3、doit:function(){if(this == window){alert( "this == window");} else( "methos(" + this.x);}}}}; obj.doit(); //これはオブジェクトobj </script>を指します4。適用または呼び出し方を介してこれを呼び出します。これは、渡されたオブジェクトを指します。
ApplyまたはCallメソッドを使用して、別のオブジェクトの代わりにメソッドを呼び出すことができます。呼び出しメソッドは、関数のオブジェクトコンテキストを初期コンテキストからthisOBJによって指定された新しいオブジェクトに変更します。 thisOBJパラメーターが提供されていない場合、グローバルオブジェクトはthatoBJとして使用されます。 (コールモードを適用)
//コードリスト4 <スクリプトタイプ= "text/javascript"> var obj = {x:3、doit:function(){alert( "メソッドは呼ばれます:" + this.x);}}; var obj2 = {x:4}; obj.doit(); // 3、これはobjobj.doit.apply(obj2)を指します。 // 4、これはobj2obj.doit.call(obj2)を指します。 // 4、これはobj2 </script>を指します5。これはプロトタイプチェーン - プロトタイプオブジェクトであり、コンストラクターでは、新しく作成されたインスタンスオブジェクトを指します。プロトタイプ拡張法を使用して、これを使用してソースオブジェクトのインスタンスを取得すると、プロトタイプチェーンを介してプライベートフィールドを取得することはできません。
//コードリスト5 <スクリプトタイプ= "text/javascript"> function func(){this.fielda = "I'm a field"; var privatefielda = "I'm a var";} func.prototype = {extendmethod:function(str){alert(str + ":" + this.fiela); alert(privatefielda); //エラーが発生したため、プロトタイプチェーンを介してプライベートフィールドを取得できませんでした。 }}; var obj = new func(); obj.extendmethod( "from prototype"); //この時点でコンストラクターとプロトタイプチェーンのこのポインティングオブジェクトOBJで、obj </script>6。これは閉鎖 - 閉鎖:関数に記述された関数、これはグローバルオブジェクトウィンドウを指します。
6.1オブジェクト内の閉鎖
//コードリスト6 <スクリプトタイプ= "text/javascript"> var name = "the window"; var obj = {name: "my object"、getnamefunc:function(){return this.name;}}}; alert(obj.getnamefunc()()()); //ウィンドウ</script>この時点で、これはグローバルオブジェクトウィンドウを指し示しており、グローバルオブジェクトのプロパティのみを取得できます。では、オブジェクト内のプロパティ(外部関数の変数)にアクセスしたい場合はどうすればよいですか?外部関数のこのオブジェクトを、閉鎖によってアクセスできる変数に保存するだけです。次のコードを見てください。
//コードリスト7 <スクリプトタイプ= "text/javascript"> var name = "the window"; var obj = {name: "my object"、getnamefunc:function(){var that = this; return function(){return that.name;}}}}}; alert(obj.getnamefunc()() //私のオブジェクト</script>これをその変数に外部関数に割り当て、外部関数の変数を読むことができます。
6.2関数を直接参照するか、関数をインスタンス化するかにかかわらず、これは閉鎖関数でウィンドウにポイントを返します。
//コードリスト8 <スクリプトタイプ= "text/javascript"> function a(){alert(this == window); var this = this; var func = function(){alert(this == window); alert(that);}; return func;} var b = a(); b(); b(); // true、true、[object window] var c = new a(); c(); // false、true、[object object] </script>7。関数はBIND()メソッドを使用してオブジェクトをバインドすると、これによりbind()関数に渡される値が指されます。
//コードリスト9 <スクリプトタイプ= "text/javascript"> window.color = "red"; var obj = {color: "blue"}; function sayscolor(){alert(this.color);} var objsaycolor = saycolor.bind(obj); objsaycolor(); // blue </script>8。HTML要素に埋め込まれたスクリプトセグメント、これは要素自体を指します
//コードリスト10 <div onclick = "test(this)" id = "div">クリック</div> <script type = "text/javascript"> function test(obj){alert(obj); // [オブジェクトhtmldivelement]} </script>9。スクリプトタグに記述:これは、グローバルオブジェクトウィンドウを指します。これは、最初のポイントでグローバル関数によって呼び出されるグローバル変数と同じです。
上記は、編集者が紹介したJavaScriptのこれからの引用です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!