「这是我参与2022首次更文挑战的第37天,活动详情查看:2022首次更文挑战」
写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
简述
函数这一章其实在有一定的编程基础,比如学过一点c语言就很好读下去。整体还是易读板块。
10.9函数内部
- 10.9.1 arguments对象
① 一个类数组对象。
② arguments对象包含调用函数时传入的所有参数
③箭头函数没有arguments对象。
④包含callee 属性,是一个指向 arguments 对象所在函数的指针。
也就是 arguments.callee == 函数名。
- 10.9.2 this
this指向不同的对象会有不同的结果。
①标准函数
this 引用的是把函数当成方法调用的上下文对象。
注意: 在网页的全局上下文中调用函数时,this 指向 windows
②箭头函数
this引用的是定义箭头函数的上下文。
注意: 在事件回调或定时回调中调用某个函数时,this 值指向的并非想要的对象。
解决方法: 箭头函数中的 this 会保留定义该函数时的上下文 所以把回调函数写成箭头函数就可以解决问题。
-
10.9.3 caller
①引用
降低耦合度 使用arguments.callee.caller。显示指向函数的源代码。
②严格模式
-
arguments.callee
①在严格模式下访问 arguments.callee 会报错。
②在非严格模式下则始终是 undefined
-
arguments.caller
安全防护
以上的改动使得第三方代码无法检测同一上下文中运行的其他代码。
赋值
不能给函数的 caller 属性赋值,赋值会导致错误。
-
10.9.4 new.target
用于检测函数是否使用 new 关键字调用
①函数作用
函数是正常调用的,new.target 的值是 undefined。
②检测函数是否使用new关键字
使用 new 关键字调用的,则 new.target 将引用被调用的构造函数。