ホームページ >ウェブフロントエンド >jsチュートリアル >この謎をJavaScriptで解析してみる
前書き: これは JavaScript の比較的特殊なキーワードであり、その幅広い用途と柔軟なメソッドにより強力ですが、同時に使いにくい という性質があります。初めてそれを学び始めたとき、それを完全に理解するために多くの情報を調べました。そこで学んだことを整理して分かりやすく表現しました。学習ノートとして、また困っている子どもたちの参考として使えます^_^
これは何ですか?
このキーワードの意味は明確かつ具体的です。つまり、現在の オブジェクト を指します。これは、これが特定の相対的な状況下でのみ当てはまることを意味します。
これは、グローバル オブジェクト、現在のオブジェクト、または任意のオブジェクトの 3 つの状況に分けられます。どの状況にあるかは、関数 の呼び出し方法に完全に依存します。
として呼び出すメソッドがあります。通常の関数
オブジェクトメソッドとして呼び出します
コンストラクターとして呼び出します 呼び出します
apply または call を使用して呼び出します
1. 通常の関数として呼び出します
------- これは私たちの最も一般的に使用される 1 つのメソッド、この呼び出しメソッドはグローバル呼び出しであり、上に示すように、これはグローバル オブジェクト
function test(){ this.a = 5; alert(this.a); alert(this); } test(); // 5 [object Window]
を参照します。グローバルに定義された関数、関数の所有者は現在のページです。これは window オブジェクト なので、 example() の呼び出しオブジェクトは Window なので、ここでは Window を表します。 test() 関数 a 内で宣言されていますが、test() を呼び出した結果は 5 であり、関数内のこれが Window であるグローバル オブジェクトを表すことを示しています。
var a = 5; function test(){ var a = 10; alert(this.a); } test(); //5
上に示すように、test() 関数を呼び出します。グローバル変数 a の値を変更することは、これが現時点でグローバル オブジェクトを表すことを意味します。
2. オブジェクト関数として呼び出す
------オブジェクトによって関数が呼び出される場合、この時点でオブジェクトを指します
var a = 5; function test(){ this.a = 10; } test(); alert(a); //10
上に示したように、人を実行します。 showName() の結果は Li Si です。これは、showName の this が person を指すことを意味します
person.showName を other に代入した後、other はグローバル変数であるため、ウィンドウ オブジェクトの 属性
と見なすことができます。 。したがって、other() を呼び出すとき、これは window.other() を呼び出すことと同じなので、これはウィンドウを指し、出力結果は Zhang San になります
したがって、関数オブジェクトとして呼び出された場合、これは のオブジェクトを指します。電話。
をコンストラクターとして呼び出します。-----コンストラクターは、この関数を通じて新しいオブジェクトを生成します。これは、新しいオブジェクト var name="张三";
var person={
name:"李四",
showName:function(){
alert(this.name);
}
}
person.showName(); //输出 李四
var other=person.showName;
other(); //输出 张三
を指します。 new キーワードを使用して
オブジェクト クラス
型オブジェクトを生成し、それを Dog に割り当てます。このコンストラクターを実行すると、
関数スコープ が構築され、その中で this がこのオブジェクトを指します。ここでは、dog を指しています。 .name は Dog.name と等しいため、出力結果は Doudou になります。
4. apply または call を使用して呼び出します
------apply() は、特定のオブジェクトのメソッドを適用し、現在のオブジェクトを別のオブジェクトに置き換えます。
function animal(){ this.name = "豆豆"; } var dog = new animal(); alert(dog.name); // 输出 豆豆上に示したように: b.n()----呼び出し元のオブジェクトは b を指すため、this.a == b.a となり、結果は Li Si になります
-->
以上がこの謎をJavaScriptで解析してみるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。