JavaScript中函数上下文调用模式和闭包

函数的三种执行方式:函数中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、模块化开发

 

 

posted @ 2020-05-13 16:58  Justin-wu  阅读(261)  评论(0)    收藏  举报