ES6没出现之前对象上写方法的形式只有一种①:
let person = { name:'zhangsan', sayName:function(){ console.log(this.name) } }
ES6出来后增加了一种箭头函数②:
let person = { name:'zhangsan', sayName:()=>{ console.log(this.name) } }
同时又增加了对象的简写形式③:
let person = { name:'zhangsan', sayName(){ console.log(this.name) } }
那以上三种的区别与联系是什么呢?
答:第三种是第一种的简写,调用 person.sayName() 得到的结果是一样的,this指向调用对象 person,都是打印:zhangsan。第二种是箭头函数,调用 person.sayName() 时 this 指向声明函数时外部的 this(这里就是window)由于 window 没有 name 属性,所以返回 undefined。