您好,我正在学习JavaScript,并且试图了解'this'关键字的方式。
说我有以下JavsScript代码:
var a = function(){
console.log('this value for function a:');
console.log(this);
}
var obj = {
name: 'Object1',
objFunc: function(){
console.log('this value for function objFunc in Object1:');
console.log(this);
var nestedFunc = function(){
console.log('this value for nested function nestedFunc in Object1:');
console.log(this);
}
nestedFunc();
}
}
a();
obj.objFunc();
结果如下:
结果1,2对我来说很有意义。
但是我不明白为什么对象'Object1'中嵌套func的第三个结果指向Window。
在控制台中,如果我检查Window对象并检查其属性,则会看到它具有a()的字段,因此我可以看到为什么a()的“ this”将指向Window。类似地,当我检查对象'Object1'并检查其属性时,有一个objFunc()字段,因此我可以看到objFunc()的'this'为何指向Object1。
我的问题是:
编辑:我认为我的问题已经by this website得到了回答。据我了解,闭包无法使用this关键字访问外部函数的“ this”变量,因为“ this”变量只能由函数本身访问,而不能由内部函数访问。因此,嵌套函数的“ this”将是未定义的,因此将被设置为全局对象