ネストされた Javascript 関数における「この」ポインタの動作
オブジェクトのメソッド内でネストされた関数を定義する場合、その方法を理解することが重要です「this」ポインタはこのコンテキストで動作します。次のコード スニペットを考えてみましょう:
<code class="javascript">var std_obj = { options: { rows: 0, cols: 0 }, activeEffect: "none", displayMe: function () { // "this" refers to std_obj if (this.activeEffect == "fade") { } var doSomeEffects = function () { // "this" refers to the window object if (this.activeEffect == "fade") { } } doSomeEffects(); } }; std_obj.displayMe();</code>
このシナリオでは、"this" ポインターは、ネストされた関数 "doSomeEffects()" 内の "window" オブジェクトを参照するはずであるという予想に反して、それを参照しています。 「std_obj」オブジェクト。この動作を解明するには、JavaScript の「this」ポインタの性質を詳しく調べる必要があります。
JavaScript では、「this」ポインタは関数の呼び出し方法によって決まります。 3 つの主なメソッドがあります:
入れ子関数のシナリオでは、関数 "doSomeEffects()" は "this" オブジェクトを指定せずに呼び出されます。したがって、「this」ポインタはデフォルトでグローバル オブジェクト、通常は「window」オブジェクトになります。 「this」が目的のオブジェクトを参照していることを確認するには、「std_obj.displayMe()」メソッドで「doSomeEffects()」の「this」ポインタを明示的に設定する必要があります。
「this」を管理する原則を理解することで、 " ポインターを使用すると、開発者は予期しない動作を防止し、ベスト プラクティスに準拠したコードを作成できます。
以上が「this」ポインタはネストされた JavaScript 関数でどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。