我仍然在思考“这个”。这里我在函数 sayFoo
中使用了“this”。
当我从 sayFoo() 内部记录它时,我很惊讶“this”是窗口。
我对上下文有什么不理解的地方?
myCoolThing = {
foo: "1",
doSomething: function() {
sayFoo();
function sayFoo() {
console.log(this.foo);
}
}
}
myCoolThing.doSomething(); // Errors with "foo" undefined
最佳答案
当您调用 sayFoo
时,调用它时不会将对象作为上下文。只有作为对象属性的函数才会以上下文作为父对象来调用。这会起作用:
myCoolThing = {
foo: "1",
doSomething: function() {
sayFoo.call(this);
function sayFoo() {
console.log(this.foo);
}
}
}
Function.prototype.call()只需将 this
设置为调用它的第一个参数来调用该函数(在本例中,该参数是对象,因为这就是函数中的 this
)对象的属性)。
关于javascript - "this"在私有(private)函数内部调用时引用窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24236972/