JavaScript函数是否附加到它们定义的任何特定对象或全局对象本身,我问这个问题是因为您几乎可以在任何对象上使用函数,无论该函数是否是该对象的一部分,我的意思是您可以将函数引用分配给您想要的任何对象,这意味着函数本身存储在其他地方,然后我们将它们分配给任何其他对象方法。
请纠正我,我是 JavaScript 新手,但我对 JavaScript 有所了解。
我知道这个用于引用当前上下文代码的关键字的用法。
JavaScript函数是否附加到它们定义的任何特定对象或全局对象本身,我问这个问题是因为您几乎可以在任何对象上使用函数,无论该函数是否是该对象的一部分,我的意思是您可以将函数引用分配给您想要的任何对象,这意味着函数本身存储在其他地方,然后我们将它们分配给任何其他对象方法。
请纠正我,我是 JavaScript 新手,但我对 JavaScript 有所了解。
我知道这个用于引用当前上下文代码的关键字的用法。
函数不附加到任何东西,但在执行时它们会在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