これいつものように、まずはコードを見てみましょう。 方法関数テスト(){ 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. 「stripslashes($_POST['json']);」メソッドを使用し...
目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...
簡単なレビュー: ブラウザの互換性の問題は、しばしば頭痛の種となります。ここでは、これらの問題を回避...
この記事では、ディスクを追加または拡張して、Vmare で有効にする方法について説明します。シナリオ...
この記事の例では、参考のためにMySQLトリガーを作成するための具体的なコードを共有しています。具体...
Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...
目次スロークエリログとは何ですか?スロークエリを有効にする方法ログ分析ツール mysqldumpsh...
React の PC 版は Amap を使用するようにリファクタリングされました。情報を検索したと...
マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...
毎日jQueryプラグイン - カルーセルチャートを実装するためのjQueryプラグイン。参考までに...
MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...
ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...
時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...
Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...
質問画像とテキストのシームレスなスクロールは、一般的に携帯電話では良い効果をもたらしますが、一部のモ...