この記事では、js でのこのオブジェクトの使用法の詳細な分析を主に紹介します。必要な友達はそれを学び、共有できます。
このオブジェクトは、関数の実行時に関数の実行環境に基づいてバインドされます。
実際、この文の本質は、関数を呼び出す人が誰であろうと、これは誰を指すかということです
具体的には、通常次のような状況があります:
グローバル関数
グローバル環境では、これは Window
を指す//例子1 function A() { console.log(this) } A();//Window
上記の例は非常に単純です。関数 A はグローバル環境で実行されます。つまり、グローバル オブジェクト Window が関数を呼び出します。このとき、これはWindow
オブジェクトのメソッドを指します
オブジェクトメソッドとして呼び出された場合は、そのメソッドを呼び出すオブジェクトを指します//例子2 var b = { getThis:function(){ console.log(this) } } b.getThis()//b
//例子3 var c = { getFunc:function(){ return function(){ console.log(this) } } } var cFun = c.getFunc() cFun()//Window
//例子4 var c = { getFunc:function(){ var that = this //在这里保留住this return function(){ console.log(that) } } } var cFun = c.getFunc() cFun()//c
callとapply
この時点で、thisオブジェクトは通常、関数で指定されたthisの値を指します(ここで通常の2つの単語に注意してください。試験でテストされます)callとapplyは決まり文句です。しかし、初めてのことなので、学生はこれに慣れていないかもしれないので、簡単に紹介しましょう (実際には、いくつかの単語を作るためです)。call を例に挙げます。構文は次のとおりですfun.call(thisArg, arg1, arg2, ...)
//例子5 var d = { getThis:function(){ console.log(this) } } var e = { name:'e'//(给e写个`name`属性只是因为觉得孤零零的太难看了~~) } d.getThis.call(e)//e
//例子6 var d = { getThis:function(){ console.log(this) } } d.getThis.call(null)//Window d.getThis.call(undefined)//Window
Arrow 関数
es6 の arrow 関数も今ではより頻繁に使用されていますが、注意が必要な点が 1 つあります: このオブジェクト関数 body 内の は、関数が使用されるオブジェクトではなく、関数が定義されているオブジェクトです。 実際、この状況の根本原因は次のとおりです。アロー関数にはこのオブジェクトがないため、アロー関数の this は外部コードの this になります//例子7 var f = { getThis:()=>{ console.log(this) } } f.getThis()//Window
//例子8 var g = { getThis:function(){ return function(){console.log(this)} } } var h = { getThis:function(){ return ()=> console.log(this) } } g.getThis()()//Window h.getThis()()//h
概要
一般に、このオブジェクトは、グローバル環境では、呼び出し関数のオブジェクトを指します。このオブジェクトは、呼び出し関数と適用関数では、指定されたオブジェクトを指します。指定されたペアが未定義または null の場合、このオブジェクトは Window を指します アロー関数では、このオブジェクトは外側のコード ブロックの this と同等です で、エラーがある場合でも、毎回同じように終了します。内容については、役に立ちましたらご指摘ください。いいね、収集を歓迎します。スクリプト ハウスをサポートしていただきありがとうございます。 上記は私があなたのためにまとめたものです。 関連記事:express+multerで画像アップロード機能を実装する方法
jquery.picsignで画像アノテーションコンポーネントを使用する方法
以上がjs でのこのオブジェクトの使用法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。