序文
導入まず、これが JavaScript 言語のキーワードであることは誰もが知っています。 これは、関数の実行時に自動的に生成され、関数内でのみ使用できる内部オブジェクトを表します。この値は、関数が使用される場所に応じて変化します。ただし、一般的な原則として、関数が定義されているときには this の方向は決定できません。関数が実行されたときにのみ、 this が実際に指しているオブジェクトを決定できます。実際、 this は最終的に、それが配置されている関数を呼び出すオブジェクトを指します。 それでは、この問題を段階的に検討してみましょう。 1つを探索関数a() { var user = "蒸し鯉"; console.log(this.name); //未定義 console.log(this); //ウィンドウ } (); window.a(); // 2つの結果は同じです 上で述べたように、これは最終的に、それが配置されている関数を呼び出すオブジェクトを指します。ここで、 a は実際には window オブジェクトによって指されています。 探索2var obj = { 名前:「蒸しアコウ」 f1: 関数() { console.log(this.name); //蒸しコイ} }; obj.f1(); 関数が定義されているときには this の方向を決定できないことを再度強調することが重要です。関数が実行されたときにのみ、this が指している対象を決定できます。この例では、this が配置されている f1 関数は obj オブジェクトによって呼び出されるため、ここで this は obj オブジェクトを指しています。 探索3これを完全に理解したい場合は、次の例を見る必要があります。 var obj = { a: 5, b: { 10, fn:関数(){ コンソールログ(this.a); //10 } } }; obj.b.fn(); これは、最終的には、それが配置されている関数を呼び出すオブジェクトを参照するという意味ではないでしょうか?なぜこれは obj オブジェクトを指していないのでしょうか? ここで 3 つの点を追加する必要があります。
これを見て、皆さんは this のポイントの原理を基本的に理解したと思います。もう一度繰り返しますが、関数が定義されているときには this のポイントは決定できません。関数が実行されたときにのみ、 this が実際に誰を指しているかを判断できます。実際、 this は最終的に、それが配置されている関数を呼び出すオブジェクトを指します。 これにはいくつかの異なる使用シナリオがありますコンストラクタ(新しいキーワード)の場合 関数 Student() { this.name = '蒸しファットヘッドフィッシュ'; } var s1 = 新しい学生(); console.log(s1.name); // 蒸しコイ オブジェクト s1 が関数 Student 内の名前を指すことができる理由は、new キーワードによって this のポインターがオブジェクト s1 を指すように変更できるためです。 // new キーワードの実行プロセス 1. 関数本体に空のオブジェクトを作成します。 2. 現在の this がこの空のオブジェクトを指すようにします。 3. これを介して、現在空のオブジェクトにキーと値のペアを追加します。 4. すべてのキーと値のペアを外部変数に追加されたオブジェクトを返します。 タイマー内のthisポインタ var 数値 = 0; 関数Obj() { 数値 = 1; this.getNum1 = 関数(){ コンソールにログ出力します。 }; this.getNum2 = 関数(){ setInterval(関数() { コンソールにログ出力します。 }, 1000); }; } var o = 新しいObj(); o.getNum1();//1 (o.num) o.getNum2();//0 (ウィンドウ番号)
解決策: var 数値 = 0; 関数Obj() { 数値 = 1; this.getNum1 = 関数(){ コンソールにログ出力します。 }; this.getNum2 = 関数(){ setInterval(関数() { コンソールにログ出力します。 }.bind(this), 1000);//bind を使用して this をこの関数にバインドします}; } var o = 新しいObj(); o.getNum1();//1 (o.num) o.getNum2();//1 (o.num) 説明する:
原則によれば: このような状況では、 上記は、JavaScript の this ポイントの問題の詳細な説明です。JavaScript の this ポイントの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: Linux で lvm 論理ボリューム パーティションのサイズを調整するチュートリアル (xfs や ext4 などのさまざまなファイル システム用)
効果上から下へフェードアウト ソースコードhtml、Angular構文を使用して、必要な構文を取得す...
まず、GB2312、GBK、UTF-8 はすべて文字エンコーディングであることを理解する必要がありま...
Hiveのインストールディレクトリで、confディレクトリに入り、hive-site.xmlファイル...
「キャンセル」ボタンは必要な操作プロセスの一部ではなく、デザイン上の主要な要素として表示されません...
最近、たまたまこの小さな要件に遭遇しました。昔、JS を使用してこれを処理したことを覚えていますが、...
Nginx の主な設定ファイルは nginx.conf で、グローバル ブロック、イベント ブロック...
1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...
プロトタイプチェーン継承プロトタイプ継承は、ECMAScript における主な継承方法です。基本的な...
2 つの異なるテーブルをクエリするには、結果をマージする必要があります。たとえば、table1 の列...
1. dhtmlxツリー dHTMLxTree は機能豊富なツリー メニュー コントロールです。豊...
目次1. 概要2. オブジェクト作成のパラメータ3. 監視例4. 使用方法5. ソースコード1. 概...
まず第一に、この効果は古い話題であるはずだということはわかっています。今日ファイルを整理していたら、...
1. 環境整備1.1 基本環境NTP設定: 省略 #時間の一貫性を確保するためにNTPサービスを設定...
01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...
セキュリティ上の理由から、Alibaba Cloud Server ECS にはデフォルトで独自のセ...