ホームページ >ウェブフロントエンド >jsチュートリアル >これについては javascript_javascript スキルで詳しく説明します
このオブジェクトは常に js の罠であり、それが何を指しているのかを判断するのは難しく、C や Python での self の経験により、この種の間違いをよく犯します。次に、このオブジェクトの所有権について詳しく説明します。
ルール1:地球環境のこれ
JavaScript の環境は本質的に関数によって決まります。JS では、関数によってラップされていない環境はグローバル変数ウィンドウを指します。以下の例。
ルール 2: メソッドとして呼び出された場合の this
明らかに、この状況は Python の self と一致しており、メソッドを呼び出しています。
ルール 3: コンストラクターとして使用される場合の this
言うまでもなく、この時点では、コンストラクターの実行は実際にオブジェクトを作成するのではなく、 を実行する前に作成されたオブジェクトを初期化するだけです。
以下にいくつかの例を示します
ルール 4: これは間接呼び出しです
いわゆる間接呼び出しは、apply と call を使用して関数を呼び出すことを指します。このとき、これはパラメーター リストの最初のパラメーターを指します。
ルール 5: 他の状況でもこれが適用されます
これは他のケースでは変更されないことに注意してください。これは間違いが最も起こりやすい場所でもあります。
この例では、ネストされた関数の this は、ネストされている関数を指すわけではなく、sayhello に対応する関数を指すわけではないことに注意してください。例を少し変更して
とすると
この時点で問題が発生します。ノードを使用して最初の例を実行すると、未定義のsays hello worldが表示されます。誰か説明してください。
rule6:eval はすべてのルールを破ります
最後に例を挙げて終わります
わかりますか?