このポイントのJavaScriptの基本

このポイントのJavaScriptの基本

JavaScript の this も不思議なものです。オブジェクト指向プログラミング (Java など) では、これは現在のオブジェクト参照を表します。ただし、JavaScript では this は固定されておらず、実行環境に応じて変化します。

これ

いつものように、まずはコードを見てみましょう。

方法

関数テスト(){
    console.log(これを);
}

ここに画像の説明を挿入

オブジェクト内

関数テスト(){
    console.log(これを);
}

ここに画像の説明を挿入

メソッドでは、this はメソッドが属するオブジェクトを参照します。最初のものは window のメソッドなので、window が出力され、eat メソッドは Person メソッドなので、オブジェクト Person が出力されます。

したがって、コンソールでこれを単独で使用すると、グローバル オブジェクトが表されることがわかります。

ここに画像の説明を挿入

これを隠した

オブジェクトでは、事前に 1 つずつ宣言できます。

var Person1 = {
    名前:"張三",
    年齢:18
}
var Person2 = {
    名前:"Li Si",
    年齢:19
}

これを書くのは非常に面倒なので、次のように Java クラスの概念から学ぶことができます。

var Person = 関数 (名前, 年齢) {
    this.name=名前、
    this.age=年齢
       
}
var Person1=new Person("张三",18);
var Person2 = new Person("李斯",19);

ここに画像の説明を挿入

実際、new には return this が隠されています。new を使用しないと、新しく作成されたオブジェクトが返されないことがわかります。

ここに画像の説明を挿入

では完成させましょう:

var Person = 関数 (名前, 年齢) {
    this.name=名前、
    this.age=年齢
    これを返します。
}
var Person1=new Person("张三",18);
var Person2 = new Person("李斯",19);

ここに画像の説明を挿入

この方法では、次の効果を偽装することもできます。

var Person = 関数 (名前, 年齢) {
    var = {};
    that.name=名前、
    that.age=年齢
    それを返す;
}
var Person1=new Person("张三",18);
var Person2 = new Person("李斯",19);

ここに画像の説明を挿入

厳密モード

これは、厳密モードと非厳密モードで魔法のような動作をします

関数テスト() {
  これを返します。
}

# js の前に「use strict」を追加すると、厳密モード「use strict」を意味します。
関数テスト() {
  これを返します。
}

ここに画像の説明を挿入

これは、非厳密モードの関数では、関数の所有者がデフォルトでこれにバインドされていることを示しています。したがって、グローバル値は印刷できますが、厳密モードでは関数はこれにバインドされないため、これは未定義になります。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

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

<<:  CSS フレックスベースのテキストオーバーフロー問題の解決方法

>>:  フロントエンドのパフォーマンス最適化を学ぶ準備として、HTMLページのレンダリングプロセスを理解する

推薦する

jQuery プロジェクトで重複送信を防ぐ方法

新しいプロジェクトでは、axios によって重複した送信を防ぐことができますが、古いプロジェクト (...

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

WeChatアプレットでSVGアイコンを使用する方法

SVG は、さまざまな利点があるため、近年広く使用されています。残念ながら、WeChat ミニプログ...

MySQL でテーブルを削除する 3 つの方法 (要約)

ドロップテーブルドロップはテーブル情報を直接削除するため、最も高速ですが、データを取得することはでき...

CSSタグの表示モードの詳細な説明

ラベル表示モード(重要) divタグとspanタグ1. スタイルはまったく同じですが、ラベルが異なり...

VMware Workstation Pro でサーバー仮想マシンを構築する (グラフィック チュートリアル)

私が使用している VMware Workstation Pro のバージョンは次のとおりです。 1....

Vue で動的に追加されたルーティング ページの更新時に失敗する理由と解決策

目次問題の説明シナリオインターフェースリターンフロントエンドメニューの定義vuex のメソッド問題原...

React コンポーネント通信ルーティングパラメータ転送 (react-router-dom)

目次最近Reactを勉強していて、今は仕事でVueを使っています。学習の過程で、両者を比較して理解を...

Linux での mysql8.018 のインストールと設定のプロセスの詳細な説明

Windowsでのインストールの紹介:こちらもご覧ください –》WindowsでのMySQL 8.0...

HTML メタタグの一般的な使用例のコレクション

マタタグとは<meta> 要素は、検索エンジン向けの説明やキーワード、更新頻度など、ペー...

Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...

MySQL で 1000 万件のレコードをすばやくクエリする方法

目次通常のページングクエリ最適化する方法大きなオフセット使用ID制限大量データ問題の最適化通常のペー...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...

WeChatアプレット+mqtt、esp8266温度と湿度の読み取り実装方法

まず、 esp8266 は mqtt を通じてメッセージを公開し、WeChat アプレットは mqt...