1.下面这段代码中后面的一些结果不太能理解,希望能有人解释解释呢,谢谢。
var name = 'window';
var person1 = {
name:'person1',
show1:function(){
console.log(this.name)},
show2:() => console.log(this.name),
show3:function(){
return function(){
console.log(this.name)}
},
show4:function(){
return () => console.log(this.name)}
};
var person2 = {name:'person2'}
//这里能理解此时show1()中的this指向person1的实例对象,因此name就是person1
person1.show1(); //person1
//call改变了this的指向,使person2中也有了show1()函数,因此name就是person2
person1.show1.call(person2); //person2
//这里后面的都看不大明白,望指导……
person1.show2(); //window
person1.show2.call(person2); //widnow
person1.show3()(); //window
person1.show3().call(person2); //person2
person1.show3.call(person2)(); //window
person1.show4()(); //person1
person1.show4().call(person2);//person1
person1.show4.call(person2)();//person2
箭头函数不绑定this和arguments,自己看