apply和call方法的用法:
apply方法:1. 函数名.apply(对象,[参数1,参数2...]) 2.方法名字.apply(对象,[参数1,参数2...])
call方法:1.函数名.call(对象,参数1,参数2...) 2.方法名字.call(对象,参数1,参数2...)
【第二个参数:函数中或者方法中的形参对应的实参 】
apply和call的作用:改变this指向
bind方法:复制函数时,改变this指向,所以需要接收复制的结果,重新调用
【在函数中使用:var ff= 函数名.bind(对象,参数1,参数2...);
ff();】
【在对象中使用:var ff = 实例对象.方法名.bind(对象,参数1,参数2...);
ff();】
函数作为返回值使用的需求:排序:每个文件都有名字,大小,时间,可以按照某一个属性进行排序
作用域:变量的使用范围。
作用域的变量:全局变量,局部变量。
块级作用域:{}----js中没有块级作用域。
预解析:把函数的声明和变量的声明提升到当前作用域的前面。
闭包:函数A中,有一个函数B(对象B),函数B(对象B)可以使用函数A中定义的变量和数据,此时就形成了闭包。
闭包的模式:①函数模式的闭包,②对象模式的闭包。
闭包的作用:缓存数据,延长作用域链。
闭包的优点和缺点:缓存数据。
沙箱:环境,黑盒,在一个虚拟的环境中模拟真实的环境,做实验,实验的结果和真实世界一样,但是不会影响真实世界
沙箱------匿名函数的自调用
递归:函数中调用自己本身,此时就是递归,递归一定要有结束的条件