今回は、これを ES6 の arrow 関数 で使用する方法 と、これを ES6 の arrow 関数 で使用するための 注意事項 についてお届けします。実際のケースを見てみましょう。
簡単な紹介: アロー関数の this は、一般的な関数とは異なるように定義された関数を指します。 アロー関数の this は、関数の実行時ではなく、関数を定義するときにバインドされます。確かに。
(1) 一般に、this が指す関数は、obj.say() の実行中にバインドされ、obj オブジェクト を指します。 var x=11;
var obj={
x:22,
say:function(){
console.log(this.x)
}
}
obj.say();
//console.log输出的是22
var x=11; var obj={ x:22, say:()=>{ console.log(this.x); } } obj.say(); //输出的值为11
同様のものは次のとおりです:
(3)
var a=11function test1(){ this.a=22; let b=function(){ console.log(this.a); }; b(); }var x=new test1(); 输出11
アロー関数の状況:
var a=11;function test2(){ this.a=22; let b=()=>{console.log(this.a)} b();}var x=new test2();//输出22
これは、ES6 で定義された場合の this のバインディングの具体的な意味を継承する必要があると私が理解している方法です。親実行コンテキストは親実行コンテキストであってはなりません。 ! !このようにして、アロー関数における多くの不明瞭な方向が解決されます。
注: 単純なオブジェクト (非関数) には実行コンテキストがありません。
アロー関数のこれについての深い理解
アロー関数でこの点が固定されるのは、アロー関数内にこれをバインドするメカニズムがあるためではありません。実際の理由は、アロー関数が独自のものを持っていないためです。これはまったく、内部の this が外側のコード ブロックの This になります。これがないため、
コンストラクターとして使用できません。 ES5 ではアロー関数の変換をシミュレートできます:
// ES6function foo() { setTimeout(() => { console.log('id:', this.id); }, 100); } // ES5function foo() { var _this = this; setTimeout(function () { console.log('id:', _this.id); }, 100); }
したがって、オブジェクトを定義するときは、オブジェクト
プロパティを定義します。この内部は通常、グローバル世界、またはオブジェクトが配置されている環境内の this を指します。 これらの事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
関連読書:
開発でPython Djangoを使用した経験のまとめES6モジュール構文読み込みインポートエクスポート getBoundingClientRect()を使用してdivコンテナのスクロールと固定を実装する方法以上がES6 アロー関数でこれを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。