我有一个具有多种功能的对象:
var someScopeScopedObject = {
myFunction1: function () {
console.log('foo');
},
myFunction2: function () {
this.myFunction1();
}
init: function (callback) {
callback();
}
}
因此,如果我调用 someScopeScopedObject.myFunction2
就可以正常工作
但是如果我执行 someScopeScopedObject.init(someScopeScopedObject.myFunction2)
,则会收到错误 this.myFunction1 未定义
当我以这种方式调用函数时,为什么 this
无效?
最佳答案
关键字this
指的是函数作用域。不是全局范围。您声明一个名为 myFunction2
的函数,this
引用此函数的作用域,而不是声明此函数的作用域。
这与 C# 等语言不同,其中 this
指的是类的当前实例,无论您是否在另一种方法中。
关于javascript - 尝试理解 javascript 中的 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818620/