これは JS で何を意味しますか?
これは JS で常に使用されます。今日は、人々を混乱させやすいこれが何であるか、そしてこれをどのように使用するかについて説明します
これは 1 、通常の 関数 のポイントを指します。関数の呼び出し元に通知します。簡単な方法は、関数の前にドットがあるかどうかを確認することです。ドットがある場合は、そのドットの前の値をポイントします。2. アロー関数はドメインをポイントします。関数が配置されている場所: 関数のドメインを理解することに注意してください。関数の {} のみがスコープを構成し、object の {} と if(){} はスコープを構成しません。
通常の関数、呼び出し元は obj であるため、結果は objname になります。これは、say() が通常の関数であり、先頭にドットがあるため、obj を指します。
arrow 関数、これはスコープを指します。関数が見つかり、現在のスコープはグローバル環境であるため、this.name は未定義です。
次の例を更新してください。これでアロー関数の方向が明確に理解できます。アロー関数のスコープは通常の関数です。 Say() の呼び出し元は obj
const obj = { name: 'objName', say() { console.log(this.name); }, read: () => { console.log(this.name); } } obj.say(); // objName obj.read(); // undefined
ブラウザのデフォルトの this は window
const obj = { say: function () { setTimeout(() => { console.log(this) }); } }
test(); //window
node.js
のグローバル環境のデフォルトの this は {}、通常の関数のデフォルトの this は global
function test() { console.log(this); }
example1
console.log(this); // {} function test() { console.log(this); } test(); //global
Output 10, 2
最初にこの質問を見たときは混乱しましたが、今ではメソッド関数が 2 つのパラメーターを渡すことがようやく理解できました1 つのパラメータは fn() です。fn() は通常の関数です。これは関数の呼び出し元を指し、この時点ではグローバル世界を指します (この関数の前にドットがないこともわかります)。実行結果は 10 になります。引数は、クラス
arrayのオブジェクトである関数のすべてのパラメーターです。この関数は引数によって呼び出されます。今回は、これは引数を参照し、this.length は angument.length を参照します。これは 2 で渡されるパラメータの合計数です
注: ノード環境での上記の例の実行結果は、未定義の 2、const length です。 = 10 は global .length = 10; に変更されます。これは、ノード環境でグローバルに定義された変数
が global にバインドされず、ブラウザーが自動的にグローバル環境ウィンドウにバインドされるためです