window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() JavaScript~The Codestで「this」キーワードを理解する
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2019-09-09
ソフトウェア開発

JavaScriptの'this'キーワードを理解する

ルカシュ・コルコ

ほとんどのオブジェクト指向プログラミング言語では、「this」というキーワードは特別な意味を持つ。通常このキーワードは、実行コンテキストであるオブジェクト(つまりオブジェクトの現在のインスタンス)を指す。たとえば、オブジェクトのプロパティを内部から参照するときにthisを使います。this.propertyNameと入力すると、コンテキストはオブジェクトになり、thisはそれを参照します。

'これ' JavaScript

で JavaScript というのは、より複雑だからである。 これ を参照するかどうかは、関数の定義だけでなく、その関数を呼び出す形式にも依存する。

どのように これ は、呼び出しの場所と形式に応じて機能する。

グローバル・コンテキスト

のように、グローバルオブジェクトにバインドされたグローバルコンテキストで使用される。 ウィンドウ をウェブブラウザで表示する。

this; // ウィンドウ

オブジェクト・メソッド内部

最も近いオブジェクトにバインドされたオブジェクト・メソッドの内部で使われる。オブジェクトは これ キーワードを使用します。を変更してはならないことに注意してください。 関数 ES6構文へ fun: () => this.context 文脈が変わってしまうからだ。

const obj = {
  コンテキスト:"object"、
  fun: function() {
    return this.context;
  }
};

obj.fun(); // オブジェクト

この例では、ネストされたオブジェクトを使っている、 これ それでも、最も近い文脈を指している。

const nestedObj = {.
  コンテキスト:"parent"、
  子:{
    コンテキスト"child"、
    fun: function() {
      return this.context;
    }
  }
};

nestedObj.child.fun(); // 子

コンテキストレス機能

その関数がオブジェクトの内部で定義されていても、グローバルコンテキストにバインドされたコンテキストを持たない(親となるオブジェクトを持たない)関数の内部で使用される。

を使用していることに留意されたい。 コンテキスト の代わりに let/const コンテキスト なぜなら レット そして コンスト 変数に囲まれたコンテキストを変更する。 ヴァール は常にグローバルな実行コンテキストに最も近い。 レット そして コンスト ローカル・ブロック・スコープでのみ変数を宣言する。

var context = "global";

コンストラスト obj = {
  コンテキスト:"object"、
  funA: function() {
    funB() {
      const context = "function";
      return this.context;
    }
    return funB(); // コンテキストなしで呼び出される。
  }
};

obj.funA(); // グローバル

コンストラクタ関数内部

コンストラクタにバインドされた新しいオブジェクトのコンストラクタである関数の内部で使用される。

var context = "global";

関数 Obj() {
  this.context = "Obj context";
}

const obj = new Obj();
obj.context; // Objコンテキスト

プロトタイプ・チェインで定義された関数内部

プロトタイプ・チェインで定義された関数の内部で使用され、その関数にバインドされたオブジェクトを生成する。

const ProtoObj = { { { ProtoObj = { { ProtoObj = {
  fun: function() {
    return this.name;
  }
};

const obj = Object.create(ProtoObj);
obj.name = "foo";
obj.fun(); // foo

内部 call() および apply() 関数

call() そして apply() は JavaScript 関数である。これを使えば、オブジェクトは他のオブジェクトのメソッドを使うことができる。 call() は別々に引数を取る。 apply() を配列として受け取る。

これ で変更された新しいコンテキストにバインドされる。 call() そして apply() のメソッドがある。

const objA = {
  コンテキスト:"objA"、
  fun: function() {
    console.log(this.context, arguments);
  }
};

コンストラスト objB = {
  コンテキスト:"objB"
};

objA.fun(1, 2); // objA, [1, 2].
objA.fun.call(objB, 1, 2, 3); // objB, [1, 2, 3].
objA.fun.apply(objB, [1, 2, 3, 4]); // objB, [1, 2, 3, 4].

bind()関数の内部

バインド もJavaScriptメソッドである。このメソッドは これ に渡される最初のパラメータに設定される。 bind()**.**

const objA = {
  コンテキスト:"objA"、
  fun: function() {
    console.log(this.context, arguments);
  }
};

コンストラスト objB = {
  コンテキスト:"objB"
};

const fun = objA.fun.bind(objB, 1, 2);
fun(3, 4); // objB, [1, 2, 3, 4].

イベントハンドラ内部

任意のイベント・ハンドラで使用される(例えば、 addeventListener、onclick、attachEvent。)、イベントがアタッチされたDOM要素にバインドされる。

document.querySelector(".foo").addEventListener("click", function() {)
  this; // `foo` div要素を参照する。
});

ES6 矢印関数

アロー関数の内部で使用すると、常にレキシカルスコープにバインドされます。アロー関数の中では これ どんな形であれ。

const globalArrowFunction = () => this;

globalArrowFunction(); // ウィンドウ

const obj = {
  コンテキスト:"object"、
  funA: () => this、
  funB: function() {
    return () => {
      return this.context;
    };
  }
};

obj.funA(); // ウィンドウ
obj.funB()(); // オブジェクト
2020年に向けて

続きを読む

  • カスタム・ソフトウェア開発における最大の課題
  • ソフトウェアハウスとIT人材派遣会社の違いは何ですか?

関連記事

ソフトウェア開発

将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察

The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...

ザ・コデスト
ソフトウェア開発

ラトビアを拠点とするソフトウェア開発企業トップ10社

ラトビアのトップソフトウェア開発企業とその革新的なソリューションについて、最新記事でご紹介します。ラトビアの技術リーダーたちがあなたのビジネスをどのように向上させるかをご覧ください。

thecodest
エンタープライズ&スケールアップ・ソリューション

Javaソフトウェア開発の要点:アウトソーシングを成功させるためのガイド

outsourcingのJavaソフトウェア開発を成功させるために不可欠なこのガイドを読んで、The Codestで効率性を高め、専門知識にアクセスし、プロジェクトを成功に導きましょう。

thecodest
ソフトウェア開発

ポーランドにおけるアウトソーシングの究極ガイド

ポーランドのoutsourcingの急増は、経済、教育、技術の進歩がITの成長とビジネス・フレンドリーな環境を促進していることによる。

ザ・コデスト
エンタープライズ&スケールアップ・ソリューション

IT監査ツール&テクニック完全ガイド

IT監査は、安全かつ効率的で、コンプライアンスに準拠したシステムを保証します。その重要性については、記事全文をお読みください。

The Codest
ヤクブ・ヤクボヴィッチ CTO & 共同創設者

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese