美文网首页
对象里的函数简写方式和箭头函数及this指向

对象里的函数简写方式和箭头函数及this指向

作者: WWWWWWWWWWWWWWM | 来源:发表于2019-08-28 21:51 被阅读0次

对象里的函数简写和正常写法

下面是三者的this指向问题

var obj1 = {
    fun () {
        console.log(this);
    }
};
var obj2 = {
    fun: function () {
        console.log(this);
    }
}
var obj3 = {
    fun: () => {
        console.log(this)
    }
}
obj1.fun();  //obj1
obj2.fun();   //obj2
obj3.fun();   //window

讲解

  • fun () {}这是对象里面函数的简写跟,跟 fun: function(){}一样,两者的this指向都是最原始的,谁调用指向谁
  • () =》 {}箭头函数的this指向为 是他定义时的上一级作用域的this指向,也就是说箭头函数是在哪个作用域下定义的,他的this指向就是那个作用域的this指向
    例子如下

var obj = {
    pro: {
        getPro: ()=>{
            console.log(this);
        }
    }
}
  obj.pro.getPro()  //window

箭头函数是在getPRo这里定义的,他上一级是一个pro对象,这不是作用域,所以上一级的作用域就是var obj ,也就是全局作用域window

除此之外再说个this指向加深理解

var obj = {
    say: function() {
        var f1 = ()=>{
            console.log("1111",this);   
        }
        f1();
    }
}
var o = obj.say;

o();//f1执行时,say函数指向window,所以f1中的this指向window
obj.say();//f1执行时,say函数指向obj,所以f1中的this指向obj;

相关文章

网友评论

      本文标题:对象里的函数简写方式和箭头函数及this指向

      本文链接:https://www.haomeiwen.com/subject/garvectx.html