在一次学习中看到类似的代码
a={
b:1,
c:function(){
return this.b
}
}
a.c() //1
结果返回1,但突然想到为什么c函数中访问b属性时前面要加this,他们不是在同一个对象当中吗,理应作用域链中有b啊
比如说下面,在全局作用域中,c函数访问b前面就不用加this
let b = 1;
function c(){return b}
c()
后面查资料才了解原因所在——js没有对象作用域
在前面的例子中,c函数的作用域链中只有全局作用域即window和本函数的活动对象,函数的执行环境a对象并不在c函数的作用域链中,所以访问不到