-3

JavaScript関数は、それらが定義されている特定のオブジェクトまたはグローバルオブジェクト自体にアタッチされていますか?関数がそのオブジェクトの一部であるかどうかに関係なく、ほぼすべてのオブジェクトで関数を使用できるため、この質問をします。つまり、関数参照を割り当てることができますつまり、関数はそれ自体で他の場所に保存され、他のオブジェクトメソッドに割り当てられます。

JavaScript は初めてですが、JavaScript はある程度知っています。

現在のコンテキストコードを参照するために使用されるこのキーワードの使用法を知っています。

4

1 に答える 1

2

関数は何にもアタッチされていませんが、実行時に何らかのオブジェクトにバインドされているコンテキストでアタッチされます (未定義になる場合があるthisES5 の厳密モードを除く)。this

どのオブジェクトthisが参照されるかは、関数がオブジェクトのメンバーとしての場合、関数の呼び出し方法、または や などの関数が使用されているかどうかによって決まりcallますapply

var obj = {
  x: 20,
  fn: function() {
    console.log(this.x);
  }
};
obj.fn(); // prints 20 as `this` will now point to the object `obj`

var x = 10;
var fn = obj.fn;
fn(); // prints 10 as `this` will now point to the global context, since we're invoking the function directly

var newObj = {
  x: 30
};
fn.call(newObj); // prints 30 as `this` points to newObj
fn.apply(newObj); // same as the above, but takes an the functions arguments as an array instead of individual arguments
于 2013-02-16T06:14:19.443 に答える