函数的三种执行方式:函数中this的指向,不用管函数是怎么声明,只看是谁在调用(函数内部的this无法更改)
1、作为普通函数调用:this的指向是window
2、作为方法调用:this的指向是调用这个方法的对象
3、作为构造函数调用:配合new关键字创建对象,this指向这个对象
更行函数内部的this指向:使用第四种调用模式(函数上下文调用模式)
1、call():语法->函数.call(obj,arg1,arg2,...)
2、apply():语法->函数.apply(obj,数组)
3、bind():语法->函数.bind(obj),生成一个新的函数,不会立即执行
函数上下文调用模式注意:
1、call(),apply(),bind(),这三个方法都在Function.prototype原型,所以所有函数都可以调用这三个方法
2、使用函数上下文调用时,obj为包装类型(100,‘aaa’,true)时的this指向(Number,String,Boolean),obj为(undefined,null,window,不传)时的this指向window
3、哪个函数进行函数上下文调用,哪个函数的this指向就被修改
闭包的作用:
1、延长变量的生命周期
2、提供有限的访问权限
沙盒/沙箱:
1、分割作用域避免全局污染
2、模块化开发
原文:https://www.cnblogs.com/ppliuye/p/12883428.html