ホームページ  >  記事  >  ウェブフロントエンド  >  この謎をJavaScriptで解析してみる

この謎をJavaScriptで解析してみる

怪我咯
怪我咯オリジナル
2017-03-29 14:48:01938ブラウズ

前書き: これは 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 になります
したがって、関数オブジェクトとして呼び出された場合、これは のオブジェクトを指します。電話。

3.


をコンストラクターとして呼び出します。-----コンストラクターは、この関数を通じて新しいオブジェクトを生成します。これは、新しいオブジェクト


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 になります
b.n.apply- --- apply() のパラメータが空の場合、現在のオブジェクトを置き換えるオブジェクトはなく、デフォルトでグローバル オブジェクトが使用されるため、これは window を指し、結果は Zhang San になります。 b)----電流を適用することを指します のこの点が b に置き換えられるので、this は b を指し、結果は Li Si です
(この記事はネット情報といくつかの書籍を参照しています。間違いがあればご容赦ください) 、指摘してください。すぐに修正されます。O(∩_ ∩)O)

概要:
この記事では、JavaScript の this キーワードの意味をさまざまな状況で紹介します。例は非常に簡単です。理解を深めるのに役立ちます。これは JavaScript の小さな概念にすぎませんが、これを使用して JavaScript の関数の実行環境を理解することで、
オブジェクト指向

JavaScript プログラムを簡単に作成できるようになります。最後に、ご覧いただきありがとうございます。








-->


以上がこの謎をJavaScriptで解析してみるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。