作者:布丁可爱_997 | 来源:互联网 | 2023-09-16 19:58
概述
刚学前端不久,对于React中的事件监听写法有所疑问.
我知道的写法有:
在构造函数中通过bind函数
定义函数的时候采用剪头函数定义
问题
我不理解的是第三种写法
我个人认为箭头函数和bind应该是同一种东西的不同写法。但是我写了一个demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| var name = 'outside'
var obj = {
name: 'inside',
getName1: function() {
return function() {
return this.name;
};
},
getName2: function() {
var func = function(s) {
return function() {
return s;
}
};
return func(this.name);
},
getName3: function () {
var func = ()=> this.name;
return func;
},
getName4: function () {
var func = function() {
return this.name;
};
func = func.bind(this);
return func;
},
getName5 :function () {
var func = function() {
return this.name;
};
var func2 = ()=>func();
return func2;
}
};
console.log(obj.getName1()());//undefine或outside
console.log(obj.getName2()());//inside 通过闭包解决
console.log(obj.getName3()());//inside 通过箭头函数
console.log(obj.getName4()());//inside 通过bind函数
console.log(obj.getName5()());//undefine或outside ???不理解 |
在getName3、4、5中,getName5返回的居然不是inside??
问题可能出在我对于箭头函数以及bind的理解有错误么?
希望能够得到前辈指点