1

私は JavaScript にかなり慣れていないので、キーワード を使用する やその他のメソッドを使い始めたばかりで.apply()、 関数が呼び出されるコンテキストと関係があることがわかりますが、本当に理解したいと思います正確には何を指していますか。thisthisthis

特定の関数呼び出しとthis の関係は、オブジェクトとプロパティ/メソッドの関係に似ています。

この 2 つの関係は関連しているのでしょうか。

4

2 に答える 2

1

ECMAScript 言語仕様セクション 11.1.1によると、答えは

this キーワードは、現在の実行コンテキストのThisBindingの値に評価されます。

于 2014-02-26T16:21:45.600 に答える
1

考えられる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

コンテキストを明示的に設定する

callapply、を使用してコンテキストを変更できますbind

function foo() {
  console.log(this);
}

foo.call(1); //1
foo.call(window); //window

var bar = {};
bar.foo = foo;
bar.foo.apply(42); //42
于 2014-02-26T16:26:16.877 に答える