箭头功能这始终是窗口还是全局?从箭头函数返回的可能不是窗口也不是全局的吗?

时间:2019-09-09 08:27:35

标签: javascript this arrow-functions

这是我的代码:

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()
       }

0 个答案:

没有答案