深入JavaScript Day04 - 闭包、this的四种绑定方式

一、闭包补充

1、闭包是如何导致内存泄漏的?如何解决?

  • window【持有】了闭包函数,闭包函数【持有】了父级AO
  • 后续不再使用闭包函数了,但是闭包函数持有的父级AO始终不能释放
    -【解决方案】将window持有的闭包函数,指向null
image.png

2、借助Chrome的性能分析,来验证闭包的持有对象不释放问题?(思路很重要)

image.png

3、如果闭包持有的父级AO中,仅仅使用name,而未使用age,那么age也会被持有吗?

  • age不会被闭包持有
  • 从浏览器的bugger模式可以看到
image.png

二、this的四种绑定情况

1、this指向其实是有点难知识点,那么为什么JavaScript开发中需要this呢?

  • 有this的代码,将获得更好的灵活性、扩展性
  • 比如下面代码,没有使用this,那么逻辑代码将和变量名绑定,耦合度就会很高,也不易扩展
image.png

2、浏览器中,在全局作用域下,this指向谁?

  • 指向window

3、从下面代码,对于this有什么感悟?

image.png
  • this的绑定和定义的位置(编写的位置)没有关系
  • this是运行时被绑定的

4、默认绑定?

image.png

5、隐式绑定?

image.png

6、显示绑定?

image.png

7、new绑定

image.png

8、call、apply、bind的区别?

image.png

9、四种绑定规则的优先级?

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容