Skip to content

闭包&作用域

闭包是一个函数以及其捆绑的周边环境的组合

闭包的表现

表现为函数作为参数被传递,函数作为返回值被返回 img_13.png

闭包实现私有变量

img_14.pngimg_15.png

自由变量

img_16.pngimg_17.png

作用域

img_18.pngimg_19.png

this

函数执行的时候才能确定this

四个作用域中的this

1、普通函数

普通函数,没有对象去调用,this指向windowimg_22.png

2、事件函数和自定义对象

谁调用,this就指向谁 img_23.png

3、new关键字

  1. this指向返回的对象 img_24.png
  2. 构造函数里有this img_25.pngimg_29.png
  3. 注意返回是否是对象 img_26.png

4、箭头函数

this就是父类的this img_27.pngimg_28.png

模块化

js
export{}//将本文件模块化

call、apply、bind

相同点

  1. 都是动态修改this指向;都不会修改原先函数的this指向。

不同点

1.是否立即执行
  1. callapply是改变后页面加载之后就立即执行,是同步代码
  2. bind异步代码,改变后不会立即执行,而是返回一个新的函数
2.修改this指向不一样
  1. 修改this的性质不同 callapply只是临时修改一次,当再次调用原函数的时候,它的指向还是原来的指向img_20.png
  2. bind永久修改函数this指向,但是它修改的不是原来的函数;而是返回一个修改过后新的函数img_21.png
3.传参方式不同

call和bind传参是一个一个逐一传入,apply可以使用数组的方式传入