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

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

下面是三者的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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容