知识点整理之---this指向和改变方法以及箭头函数和普通函数区别

知识点之间都是相互串联的关系,最初会觉得比较琐碎,随着越来越深入,很多就会由点点到线,由线成面。现在我们来把一部分知识点串成线吧。

this相关知识点
普通函数调用时的this指向问题:

1、纯函数调用时,this指向window;
2、事件调用时,谁调用指向谁;
3、定时器调用时,this指向window;
4.、构造函数调用时,this指向构造函数生成的这个新的对象;
5、apply 调用时,this指向它的第一个参数。

提到apply,另一个知识点来了:

this指向如何改变?

JS中改变this指向有三个封装好的方法:
1、call(参数1(写谁是谁),实参)
2、apply(参数1(写谁是谁),[N个实参])
3、bind()返回值为一个修改完this指向的函数,需要主动调用。
例:
let f=fn.bind(this.a.b...)
f();

说完改变方法,就得提一提为什么说上面的this指向有个普通函数调用这个问题了,那是因为还有个不普通的函数也牵涉的this指向问题。

箭头函数和普通函数的区别?

1、箭头函数作为匿名函数,不能作为构造函数,不能使用new运算符;
2、箭头函数不绑定auguments,用rest参数...解决;
3、箭头函数会捕获其上下文的this值,作为自己的this值;
4、箭头函数当方法使用的时候,没有定义this绑定;
5、使用call()和apply()调用,传入参数时,参数一的改变对this没有影响;
6、箭头函数没有原型属性;
7、箭头函数不能当做Generator函数,不能使用yiel关键字。

总之,箭头函数的this指向永远指向其上下文的this,任何方法都改变不了,而普通函数的this指向调用它的那个对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。