函数进阶
、- 能够说出函数的多种定义和调用方式
- 能够说出和改变函数内部this的指向
- 能够说出严格模式的特点
- 能够把函数作为参数和返回值传递
- 能够说出闭包的作用
- 能够说出递归的两个条件
- 能够说出深拷贝和浅拷贝的区别
1.函数的定义和调用
1.自定义函数:function fn(){};2.函数表达式:var fun = function(){};3.利用new Function('参数1','参数2','函数体')函数也属于对象
2.函数的调用方式:
1.普通函数:fn();fn.call();;this指向window
2.对象的方法:o.sayHi();;;this指向该方法所属对象
3.构造函数:new star();;;this指向实例对象,原型对象里面的方法也指向实例对象
4.绑定事件函数:but.onclick = function(){};;;this指向绑定事件对象
5.定时器函数:setInterval(function(){},1000);;;this指向window
6.立即执行函数(function(){立即执行})();;;this指向window
2.this
改边函数内部的this指向:bind();call();apply()
call(参数,实参,实参)方法,第一个可以调用函数,第二个可以改边函数内的This指向,第三个可以实现继承
apply()方法调用了一个函数,就是调用函数的方式,但是它可以改边函数的this指向fun.apply(thisArg在fun函数运行时指定的this值,[argsArray]传递的值,必须包含在数组里面)返回的就是函数的返回值,因为它就是调用函数
数组中没有求最大值的方法1,但是字符串中有,于是Math.max.apply(this,数组参数)
bind()捆绑绑定,它不会调用原来的函数,会改边this指向,返回的是原函数改变之后的新的函数
call()一般用作继承,apply经常和数组相关,bind不调用函数改边定时器指向
3.严格模式
'use strict'为整个脚本开启严格模式
4.高阶函数
高阶函数是对其他函数进行操作的函数,它接受函数作为参数或将函数作为返回值输出
5.闭包
一个函数里的作用域调用了另外一个函数里的变量,这个变量所在的函数就是闭包
闭包主要作用延申了变量范围
利用闭包获取当前Li的索引号()();是立即执行函数,(function(i){})(i);
立即执行函数又叫小闭包
6.递归
如果一个函数可以在内部调用其本身,那么这个函数就是递归函数
深拷贝和浅拷贝
浅拷贝只是拷贝一层,更深层次对象级别的只拷贝地址,这样修改参数会影响原参数
深拷贝拷贝多层,每一级别的数据都会拷贝
Object.assign(target,sources)es6新增方法可以浅拷贝
正则表达式
- 能够说出正则表达式的作用
- 能够写出简单的正则表达式
- 能够使用正则表达式对表单进行验证
- 能够使用正则表达式替换内容
1.正则表达式
1.正则表达式是用于匹配字符串中字符串组合的模式,在js中正则表达式也是对象
2.正则表达式在js中的使用
1.利用RegExp对象来创建正则表达式:var regexp = new RegExp(/123/)
2.通过字面量创建:var rg = /123/;
3.test()正则对象方法,用于检测字符串是否符合该规则,该对象会返回true或false,其参数是测试字符串regexxObj.test(str)
/表达式/[swicth]switch按照什么模式来匹配,有三种:g全局匹配,i忽略大小写,gi全局匹配+忽略大小写