これいつものように、まずはコードを見てみましょう。 方法関数テスト(){ 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」を意味します。 関数テスト() { これを返します。 } これは、非厳密モードの関数では、関数の所有者がデフォルトでこれにバインドされていることを示しています。したがって、グローバル値は印刷できますが、厳密モードでは関数はこれにバインドされないため、これは未定義になります。 これを変更してまずコードを見てみましょう var Person = 関数 (名前, 年齢) { this.name=名前、 this.age=年齢、 this.fun = 関数(){ console.log("print", this.name); } } var Person1=new Person("张三",18); var Person2 = new Person("李斯",19); これはメソッド test 内の値ではなく、window 内の a の値を指していることがわかりますが、一部のキーワードはポインターを変更できます。 メソッドの前のオブジェクトが何であるか、呼び出し内の this が何であるかはわかりますが、キーワード call、apply、bind を使用して変更することもできます。 上記から、call と apply は非常に似ていることがわかりますが、bind は関数をすぐに実行しないため、() で囲む必要があります。 ただし、パラメータを指定すると、call と apply は依然として異なるものの、どちらもオブジェクトを含む必要があることがわかります。結局のところ、this はオブジェクトを指しています。
これで、JavaScript の this の方向の詳細な分析と、方向を変更する方法に関するこの記事は終了です。JavaScript の this の方向に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: this.parentNode.parentNode (親ノードの親ノード) はどういう意味ですか?
>>: MySQLデータベースに接続し、クエリ操作を実行するためのIDEAの完全なコード
目次1. 順番に紹介する2. ユーザーを作成する3. ユーザーアカウントを削除する4. アクセス権5...
目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...
コンピューターにmyeclipse2017とidea2017がインストールされているため、ideaが...
目次forEach() メソッドjs の Array.forEach のループから抜け出す方法解決:...
方法1: グローバル general_log を 'OFF' に設定します。 テーブ...
メディアデバイスタイプの使用法の詳細な説明: <!DOCTYPE html> <h...
目次背景目的分割前プロセス設計ディレクトリ構造の設計問題分割後プロセス設計ディレクトリ構造の設計問題...
これは、CSS 3.0 で実装されたテキストのホバーとジャンプ効果です。効果は次のとおりです。 以下...
序文一部の CSS 相互作用の影響により、要素に設定されたz-index実際のサイズに応じて重ね合わ...
私はしばらく MGR と連絡を取り合ってきました。MySQL 8.0.23 の登場により、MySQL...
ウェブサイトやサービスのパフォーマンスは、データベースの設計(適切な言語開発フレームワークを選択した...
序文Linux システムはシステム サービス crond によって制御されます。 Linux システ...
プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...
目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...
表> <TR> <TD> <TH> <キャプション&...