js函数闭包与改变this指向方法

1**. js高级对象**
apply与call的使用方式
都可以改变this指向,这个方法会被当前的对象使用,同时这个方法中的this对象就是当前的对象,再调用方法时改变了this的指向

//使用方式
函数名.apply(对象,[参数1,参数2,参数3]);
函数名.call(对象,参数1,参数2,参数3);
//bind的使用方式与区别
复制一个方法或者是函数,是在复制的同时改变了this的指向
使用方式:函数.bind(对象,参数1,参数2.....)--->返回值是复制后的这个函数

//高阶函数--使用的时候函数作为参数使用,函数作为返回值使用
函数作为参数使用的时候,这个函数可以是匿名函数,也可以是命名函数


作用域和作用域链及预解析
闭包模式:函数中有另外一个函数,或者函数中有另外一个对象,里面是函数或者是对象都可以使用外面函数中定义的变量或者数据,此时形成闭包
function f1(num){
	return function(){
		console.log(num);
	}
}
f1(20);

闭包模式分为两种。函数模式闭包,对象模式闭包

闭包的作用:缓存数据,延长作用域链,同时也是缺点,函数中的变量不能及时释放

沙箱:模拟真实环境 ,在这个环境中模拟外面真实的环境,完成需求,效果与外面的真实的开发环境是一样的
第一种
(function(){}())
第二种
(function(){})()


//递归:递归就是函数中调用函数自己,递归一定要有结束条件,不然就会形成死循环
递归一般应用在遍历上,递归一般不轻易用,效率很低


猜你喜欢

转载自blog.csdn.net/weixin_42355871/article/details/83507569