这是我的代码:
obj={
obj1:{
funcTest1a:function(){ console.log ("test _1a: ",this)},// this return obj1
funcTest1b:()=>console.log("test _1b: "+ this), // this return windows
obj2:{
funcTest2a:function(){ console.log ("test _2a: ",this)},// this return obj1
funcTest2b:()=>console.log("test _2b: "+ this), // this return windows
},
obj3:{
test3(){
console.log(this);
obj.obj1.obj2.funcTest2b()
},
}
}
}
我了解,如果我在控制台中致电:
obj.obj1.obj2.funcTest2b()
可以返回窗口
但是
如果我打电话
obj.obj1.obj3.test3()
此函数内的 test3()我叫
obj.obj1.obj2.funcTest2b()
在这种情况下,我希望“ THIS”有所不同。
从箭头函数返回的可能不是窗口还是全局的?
>我找到了解决方案或更好的答案
这是如何在非全局范围内使用箭头功能的示例
a = {
hello: 'hola',
b() {
return () => {
console.log(this.hello) //or this;
}
}
}
a.b()() // print hola
所以在我的代码中,我必须更改:
funcTest2b:()=>console.log("test _2b: "+ this)
在
funcTest2b: function(){
let testInside=()=>console.log("test _2b: "+ this)
testInside()
}