序文
導入まず、これが 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 などのさまざまなファイル システム用)
1.1 バイナリインストールパッケージをダウンロードするhttps://dev.mysql.com/...
共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...
<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...
目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...
1. GitLabの紹介Gitlab 公式アドレス: https://about.gitlab.co...
この記事では、Windows 10環境でのMySQL 5.5のインストールと使用方法を紹介します。リ...
tinyMCE の使用方法の詳細な説明初期化TinyMCE を初期化するときは、ページの HEAD ...
早速ですが、デモ画像をご紹介します。実装されている機能は、左側に凡例、右側にウォーターフォール チャ...
インストールスクリプトUbuntu / CentOS Debian のインストールに問題があるようで...
目次なぜパーティションが必要なのでしょうか?パーティショニング戦略パーティションの危険性なぜパーティ...
目次エフェクト表示コードリンクキーコード表形式データコンポーネントのネスト検証方法リセット方法完全な...
URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...
ウェブサイト構築におけるカラーマッチングは非常に特殊であり、ウェブサイトのテーマ、感情、雰囲気などの...
Remax は、実行時に構文制限のないソリューションを採用した React を使用して小規模なプロ...
序文CSS を使用して点線を生成するのは、フロントエンド開発者にとっては簡単です。一般的に、これを実...