-3

JavaScript函数是否附加到它们定义的任何特定对象或全局对象本身,我问这个问题是因为您几乎可以在任何对象上使用函数,无论该函数是否是该对象的一部分,我的意思是您可以将函数引用分配给您想要的任何对象,这意味着函数本身存储在其他地方,然后我们将它们分配给任何其他对象方法。

请纠正我,我是 JavaScript 新手,但我对 JavaScript 有所了解。

我知道这个用于引用当前上下文代码的关键字的用法。

4

1 回答 1

2

函数不附加到任何东西,但在执行时它们会在this绑定到某个对象的上下文中执行(除了 ES5 严格模式,其中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 回答