JSチュートリアル

JSホーム JSの紹介 JSどこへ JS出力 JSステートメント JS構文 JSコメント JS変数 JS Let JSConst JSオペレーター JS算術 JS割り当て JSデータ型 JS関数 JSオブジェクト JSイベント JS文字列 JS文字列メソッド JS文字列検索 JS文字列テンプレート JS番号 JS番号メソッド JSアレイ JS配列メソッド JS配列ソート JSアレイの反復 JSアレイ定数 JSの日付 JSの日付形式 JS DateGetメソッド JS日付設定メソッド JS数学 JSランダム JSブール値 JSの比較 JS条件 JSスイッチ JSループFor JSループフォーイン JSループの JSループWhile JSブレイク JSIterables JSセット JSマップ JS Typeof JS型変換 JSビット単位 JS RegExp JSエラー JSスコープ JSホイスト JS厳密モード JSこのキーワード JSアロー関数 JSクラス JS JSON JSデバッグ JSスタイルガイド JSのベストプラクティス JSの間違い JSパフォーマンス JS予約語

JSバージョン

JSバージョン JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE /エッジ JSの歴史

JSオブジェクト

オブジェクト定義 オブジェクトのプロパティ オブジェクトメソッド オブジェクト表示 オブジェクトアクセサー オブジェクトコンストラクター オブジェクトのプロトタイプ オブジェクト反復可能 オブジェクトセット オブジェクトマップ オブジェクトリファレンス

JS関数

関数の定義 関数パラメーター 関数の呼び出し 関数呼び出し 機能適用 関数クロージャ

JSクラス

クラスイントロ クラス継承 クラス静的

JS非同期

JSコールバック JS非同期 JSの約束 JS Async / Await

JS HTML DOM

DOMイントロ DOMメソッド DOMドキュメント DOM要素 DOM HTML DOMフォーム DOM CSS DOMアニメーション DOMイベント DOMイベントリスナー DOMナビゲーション DOMノード DOMコレクション DOMノードリスト

JSブラウザBOM

JSウィンドウ JS画面 JSロケーション JSの歴史 JSナビゲーター JSポップアップアラート JSタイミング JSクッキー

JS Web API

WebAPIイントロ WebフォームAPI Web履歴API WebストレージAPI WebワーカーAPI Web Fetch API Web Geolocation API

JS AJAX

AJAXイントロ AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

JS JSON

JSONイントロ JSON構文 JSONとXML JSONデータ型 JSON解析 JSON文字列化 JSONオブジェクト JSON配列 JSONサーバー JSON PHP JSON HTML JSON JSONP

JSとjQuery

jQueryセレクター jQuery HTML jQuery CSS jQuery DOM

JSグラフィックス

JSグラフィックス JSキャンバス JSPlotly JS Chart.js JSグーグルチャート JS D3.js

JSの例

JSの例 JS HTML DOM JSHTML入力 JSHTMLオブジェクト JSHTMLイベント JSブラウザ JSエディター JS演習 JSクイズ JS証明書

JSリファレンス

JavaScriptオブジェクト HTMLDOMオブジェクト


JavaScriptのこのキーワード


const person = {
  firstName: "John",
  lastName : "Doe",
  id       : 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

これは何ですか?

JavaScriptthisキーワードは、それが属するオブジェクトを参照します。

使用場所によって値が異なります。

  • メソッドでthisは、所有者オブジェクトを参照します。
  • 単独で、グローバルオブジェクトthisを参照します
  • 関数内で、グローバルオブジェクトthisを参照します
  • 関数では、厳密モードでは、thisですundefined
  • イベントでは、イベントを受信した要素thisを指します。
  • のようなメソッドはcall()任意のオブジェクトapply()参照できますthis

これはメソッドで

オブジェクトメソッドでは、メソッドの「所有者this」を指します

このページの上部にある例では、 personオブジェクトthisを参照しています。

personオブジェクトはfullNameメソッド所有者です。

fullName : function() {
  return this.firstName + " " + this.lastName;
}

これだけ

単独で使用する場合、所有者はグローバルオブジェクトであるため、グローバルオブジェクトthisを参照します。

ブラウザウィンドウでは、グローバルオブジェクトは[object Window]次のとおりです。

let x = this;

厳密モードで は、単独で使用thisすると、グローバルオブジェクトも参照します [object Window]

"use strict";
let x = this;

関数内のこれ(デフォルト)

JavaScript関数では、関数の所有者がのデフォルトのバインディングですthis

したがって、関数でthisは、グローバルオブジェクトを参照します[object Window]

function myFunction() {
  return this;
}

関数内のこれ(厳密)

JavaScriptの厳密モードでは、デフォルトのバインドは許可されていません。

したがって、関数で使用する場合、厳密モードでは、thisですundefined

"use strict";
function myFunction() {
  return this;
}

これはイベントハンドラーで

HTMLイベントハンドラーでthisは、イベントを受信したHTML要素を参照します。

<button onclick="this.style.display='none'">
  Click to Remove Me!
</button>


オブジェクトメソッドバインディング

これらの例でthisは、personオブジェクトです(personオブジェクトは関数の「所有者」です)。

const person = {
  firstName  : "John",
  lastName   : "Doe",
  id         : 5566,
  myFunction : function() {
    return this;
  }
};

const person = {
  firstName: "John",
  lastName : "Doe",
  id       : 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

つまり、 this.firstNameは、この(person)オブジェクトのfirstNameプロパティを 意味します。


明示的な関数バインディング

およびメソッドは、事前定義されたJavaScriptメソッドですcall()apply()

これらは両方とも、引数として別のオブジェクトを使用してオブジェクトメソッドを呼び出すために使用できます。

call()詳細については、apply()このチュートリアルの後半で読むことができます。

以下の例では、person2を引数としてperson1.fullNameを呼び出すと、person1thisのメソッドであってもperson2を参照します。

const person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
const person2 = {
  firstName:"John",
  lastName: "Doe",
}
person1.fullName.call(person2);  // Will return "John Doe"