this 属性は現在のオブジェクトを表します。これがグローバル スコープで使用される場合は、現在のページ オブジェクト ウィンドウを参照します。これが関数で使用される場合は、実行時にこの関数が呼び出されるオブジェクトを参照します。 また、2 つのグローバル メソッド apply と call を使用して、関数内の this の特定のポインタを変更することもできます。 まず、これをグローバル スコープで使用する例を見てみましょう: コードをコピーします コードは次のとおりです。 <br>console.log(this === window) // true <br>console.log(window.alert ==) = this.alert) ; // true <br>console.log(this.parseInt("021", 10)) // 10 <br><br> </div>関数内の属性は次のように、関数の定義時ではなく実行時に決定されます。 <br><br><div class="codetitle"><span><a style="CURSOR: pointer" data="99898" class="copybut" id="copybut99898" onclick="doCopy('code99898')">コードをコピー <u></u></a> コードは次のとおりです。次のように: </span></div> <div class="codebody" id="code99898">// グローバル関数を定義します。 <br>function foo() { <br>console.log(this.fruit); <br>} <br>// グローバル関数を定義します。 window.fruit = "apple "; と同等の変数 <br>var Fruit = "apple" <br>// 現時点では、関数 foo 内の this は window オブジェクトを指します<br>// この呼び出しメソッドは完全にwindow.foo();<br> foo(); // "apple" <br>// オブジェクトをカスタマイズし、オブジェクトの属性 foo をグローバル関数 foo <br>var Pack = { <br>fruit と同等: "orange", <br>foo : foo <br>}; // このとき、関数 foo は window.pack オブジェクトを指します <br>pack.foo(); // "orange" <br><br> <br>グローバル関数 apply と call を使用すると、次のように関数内の this 属性のポイントを変更できます。 </div> <br><br><div class="codetitle"> <span>コードをコピー <a style="CURSOR: pointer" data="77872" class="copybut" id="copybut77872" onclick="doCopy('code77872')"><u></u> コードは次のとおりです。 </a></span> </div>// グローバル関数を定義します。 <div class="codebody" id="code77872">function foo() { <br>console.log(this.fruit); 🎜>} <br>// グローバル変数を定義します <br>var Fruit = "apple" ; <br>// オブジェクトをカスタマイズします <br>var Pack = { <br>fruit: "orange" <br>}; <br>// window.foo(); と同等 <br>foo.apply (window) // "apple" <br>// これは foo === Pack <br>foo.apply(pack); // "orange" <br><br> <br>注: 2 つの関数 apply と call は同じ機能を持ちます。唯一の違いは、2 つの関数のパラメーターの定義が異なることです。 <br>関数も JavaScript のオブジェクトであるため、次の興味深い例がわかります。 </div> <br><br><br><div class="codetitle">コードをコピー<span><a style="CURSOR: pointer" data="17393" class="copybut" id="copybut17393" onclick="doCopy('code17393')"><u> コードは次のとおりです。 : </u></a> </span>// グローバル関数を定義します </div>function foo() { <div class="codebody" id="code17393">if (this === window) { <br>console.log("this is window.") ; <br>} <br>} <br>// 関数 foo もオブジェクトなので、foo の属性 boo を関数 <br>foo.boo = function() { <br>if ( this === foo) { <br>console.log("これは foo です。"); <br>} else if (this === ウィンドウ) { <br>console.log("これはウィンドウです。") ; <br>} <br>}; <br>// window.foo(); <br>foo(); // これは関数のポイントであることがわかります。呼び出し元の関数のオブジェクトに <br>foo.boo(); // これは foo です。<br>// 関数 <br>foo.boo.apply(window) で apply を使用して、this のポインタを変更します。 // これはウィンドウです。<br><br> </div>