JavaScript における this ポイントの問題の詳細な説明

JavaScript における this ポイントの問題の詳細な説明

要約する

  • 地球環境 ➡️ ウィンドウ
  • 通常関数 ➡️ ウィンドウまたは未定義
  • コンストラクター ➡️ 構築されたインスタンス
  • 矢印関数➡️ 定義されている場合は外側のスコープで this
  • オブジェクトメソッド ➡️ オブジェクト
  • call(), apply(), bind() ➡️ 最初のパラメータ

地球環境

厳密モードに関係なく、これはウィンドウ オブジェクトを参照します。

console.log(this === window) // true
// 厳密モード 'use strict'
console.log(this === window) // true

通常機能

  1. 通常モード
    • これはウィンドウオブジェクトを参照します
    • 関数テスト() {
        この===ウィンドウを返す
      }
      
      console.log(test()) // 真
      
  2. 厳密モード
    • この値は未定義です
    • // 厳密モード 'use strict'
      
      関数テスト() {
        これを返す === undefined
      }
      
      console.log(test()) // 真
      

コンストラクタ

関数がコンストラクターとして使用される場合、これは構築されたインスタンスを指します。

関数テスト() {
  この数値 = 1
}

test1 = 新しい Test() とする

console.log(テスト1.番号) // 1

矢印関数

関数が矢印関数の場合、 this は関数が定義されたときの前のスコープ内の this 値を参照します。

テスト = () => {
  この===ウィンドウを返す
}

console.log(test()) // 真
obj = {
  番号: 1
}

関数foo(){
  戻り値 () => {
    this.numberを返す
  }
}

テスト = foo.call(obj) を実行します。

コンソール.log(テスト()) // 1

オブジェクトメソッド

関数がオブジェクトのメソッドとして使用される場合、this はオブジェクトを参照します。

obj = {
  番号: 1,
  取得番号() {
    this.numberを返す
  }
}

コンソール.log(obj.getNumber()) // 1

呼び出し()、適用()、バインド()

  • 関数の call() または apply() メソッドを呼び出すと、関数の this は渡された最初のパラメータを指します。
  • 関数の bind() メソッドが呼び出されると、返される新しい関数の this は渡された最初のパラメータを指します。
obj = {
  番号: 1
}

関数テスト(数値) {
  this.number + num を返す
}

コンソール.log(test.call(obj, 1)) // 2

コンソール.log(test.apply(obj, [2])) // 3

foo = test.bind(obj, 3) とします。
コンソール.log(foo()) // 4

JavaScript のこのポインティング問題の詳細なケースに関するこの記事はこれで終わりです。JavaScript のこのポインティング問題に関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • このポイントのJavaScriptの基本
  • JSの矢印関数におけるこのポイントの詳細な説明
  • このリファレンスとJavaScriptのカスタムプロパティの詳細な説明
  • 関数の分類の詳細な説明とJavascriptでのこのポイントの例
  • JavaScript関数におけるこのポイントの問題の詳細な説明
  • JavaScript プロトタイプオブジェクトの this ポイント問題の詳細な説明

<<:  Dockerにelasticsearchとkibanaをインストールする方法

>>:  MySQL における distinct と group by の違い

推薦する

良いリファクタリングを行うには、コードをリファクタリングするだけでなく、人生をリファクタリングすることも重要です。

職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...

MySQL 5.7を完全にアンインストールするための詳細な手順

この記事は主に、MySQLを再インストールする際のクリーンでないアンインストールのさまざまな問題をま...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

Reactでパスワード強度検出器を実装する方法

目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

プロフェッショナルなMySQL開発設計仕様とSQL記述仕様

チーム開発のプロセスでは、プロジェクトの安定性、コードの効率性、管理の利便性のために、内部開発および...

CSS3 フィルター属性の使い方の紹介

1. はじめにフロントエンドページのアニメーション効果を記述する場合、filter 属性は多かれ少な...

カルーセル例の JS 実装

この記事では、カルーセルチャートの小さなケースを実装するためのJSの具体的なコードを参考までに共有し...

Linux zabbix エージェントの展開と設定方法の詳細な説明

1. web01にzabbix-agentをインストールするZabbix ウェアハウスをデプロイする...

JavaScriptプロトタイプチェーン図のまとめと実践

目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...

CSS でハニカム/六角形アトラスを実装するためのサンプルコード

理由は分かりませんが、UIではハニカム効果(手を広げたような効果)のデザインが好まれます。 1. 六...

Vue の better-scroll コンポーネントを使用して水平スクロール機能を実現する

について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...

HTML テーブルタグチュートリアル (33): セルの垂直配置属性 VALIGN

垂直方向では、セルの配置を上、中央、下に設定できます。基本的な構文<TD VLIGN=&quo...