【学习打卡】第五天 直面JavaScript中的30个疑难杂症
学习课程名称:直面JavaScript中的30个疑难杂症
章节名称:函数对象(重难点)
讲师姓名:公明2020
课程内容概述:
- 常见函数的四种类型有哪些
- 一定要知道的变量和函数提升
- 带你深入理解作用域和作用域链
- 带你图解执行环境
- 开发中重载和多态的使用场景有哪些
- 高频面试题闭包理解
- 开发中call、apply、bind的使用场景区分
- new的执行过程有哪几步
- 开发中使用this的坑有哪些
常见函数四种类型:
匿名函数
1.匿名函数:定义时候没有任何变量引用的函数
2.匿名函数自调:如果函数只执行一次
回调函数:如果一个函数作为对象交给其他函数使用
递归函数:循环调用函数本身
构造函数:构造函数习惯上首字母大写
调用方式不一样,作用也不一样(构造函数用来新建实例对象)
变量提升:变量的声明写在可以在使用变量之后;
函数提升:函数可以先调用,后声明;
JavaScript 变量生命周期
JavaScript 变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
作用域链
由多级作用域连续引用形成的链式结果
掌管一切变量的使用顺序: 先在局部找,没有,就延作用域向父级作用域找;
重载:
重载可认为是静态的多态,静态联编,发生在编译阶段;
重载就是一组具有相同名字、不同参数列表的函数(方法)。
重载,函数特征之一,表现为在一个类中同名不同参的方法分别被调用会产生不同的结果。
多态:
多态是动态的,动态联编,发生在运行阶段;
多态,面向对象特征之一,表现为不同对象调用相同方法会产生不同的结果。可以理解一个方法被不同实现后 展现不同的效果及状态。
静态的比动态的效率高,但动态的最大优点是多态性,提高代码复用性。
call方法
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 arg1 … argN为被调用方法的传参。
apply方法
语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明:apply的第一个参数thisObj和call方法的一样,第二个参数argArray为一个传参数组。thisObj如果未传,那么 Global 对象被用作 thisObj。
bind方法
在ECMAScript5中扩展了叫bind的方法(IE6,7,8不支持) 语法:bind([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明:bind的thisObj参数也和call方法一样,thisObj如果未传,那么 Global 对象被用作 thisObj。arg1 … argN可传可不传。如果不传,可以在调用的时候再传。如果传了,调用的时候则可以不传,调用的时候如果你还是传了,则不生效。
共同学习,写下你的评论
评论加载中...
作者其他优质文章