誰か知っていますか?かなり基本的なように見えますが、以前に尋ねられたこの質問を見つけることができませんでした。
2 に答える
3
(キーワード)完全に暗黙的context
ではなく、明示的に設定および変更できます。this
例えば:
function test () {
alert(this);
}
test.call("Hello world");
test
関数は文字列をコンテキストとして呼び出されます。
結論として、this
明示的に定義するか、関数内にいない限り、何が何であるかを知ることはできません。
于 2009-11-14T19:27:11.973 に答える
2
同じ関数this
でも、呼び出し方によって の値が異なります。詳細についてはCrockfordを参照してください。ただし、次の 4 つのケースがあります。
- 単純な関数として呼び出され、グローバル/ウィンドウ オブジェクトにバインドされます。
- オブジェクトのメソッドとして呼び出され、そのオブジェクトを参照します。
- キーワードを介してコンストラクターとして呼び出されるのは、関数の独自のプロパティ
new
に格納されているオブジェクトから継承する、新しくインスタンス化されたオブジェクトです。prototype
- 独自のメソッド
apply
またはcall
メソッドによって呼び出され、指定された最初の引数です。
this
これらのケースが複雑で、退屈で、エラーが発生しやすいと思われる場合は、メソッドの外部に依存することを避けるべき理由がさらにあります。
于 2009-11-14T21:01:41.050 に答える