私は JavaScript にかなり慣れていないので、キーワード を使用する やその他のメソッドを使い始めたばかりで.apply()
、 関数が呼び出されるコンテキストと関係があることがわかりますが、本当に理解したいと思います正確には何を指していますか。this
this
this
特定の関数呼び出しとthis
の関係は、オブジェクトとプロパティ/メソッドの関係に似ています。
この 2 つの関係は関連しているのでしょうか。
私は JavaScript にかなり慣れていないので、キーワード を使用する やその他のメソッドを使い始めたばかりで.apply()
、 関数が呼び出されるコンテキストと関係があることがわかりますが、本当に理解したいと思います正確には何を指していますか。this
this
this
特定の関数呼び出しとthis
の関係は、オブジェクトとプロパティ/メソッドの関係に似ています。
この 2 つの関係は関連しているのでしょうか。
ECMAScript 言語仕様セクション 11.1.1によると、答えは
this キーワードは、現在の実行コンテキストのThisBindingの値に評価されます。
考えられる3つのケースを次に示します。これらは正式には説明されていませんが、単純で直感的に説明されています。
デフォルトのコンテキスト
コンテキストを指定せずに関数(メソッドではない)を呼び出すthis
と、グローバル オブジェクトになります。
function foo() {
console.log(this); //window
}
コンテキストを暗黙的に設定する
指定されたオブジェクトのメソッドである関数を呼び出すとthis
、最後のドットの前のオブジェクトになります。
function foo() {
console.log(this);
}
var bar = {};
bar.foo = foo;
bar.foo(); //bar
bar.baz = {};
bar.baz.foobar = foo;
bar.baz.foobar(); //bar.baz
コンテキストを明示的に設定する
call
、apply
、を使用してコンテキストを変更できますbind
。
function foo() {
console.log(this);
}
foo.call(1); //1
foo.call(window); //window
var bar = {};
bar.foo = foo;
bar.foo.apply(42); //42