JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足

JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足

一、什么是闭包?

  • 所谓闭包就是指被定义在其他函数内部的函数。
  • 闭包函数可以访问它所在的函数的所有变量。

文字太抽象了,画图解释一下吧,先看下面这段小代码
JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第1张图片
JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第2张图片

二、常用的闭包的格式

  • 常用的闭包的格式:即将内部函数作为外部函数的返回值返回
    JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第3张图片

画图解释一下吧,嘎嘎嘎
JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第4张图片
JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第5张图片
三、闭包的不足以及如何解决

  • 如果程序中有大量的闭包存在,那么势必会造成内存资源的浪费
  • 所以在不使用闭包的情况下,需要将闭包清除 闭包函数=null
    JavaScript学习(五十九)—原型、原型链、闭包以及闭包的不足_第6张图片

最后:回顾一下前几天学过的知识,图我就不画了

一、原型

  • 所有构造方法中都有prototype属性,这个属性指向了一个对象,这个对象被称为原型对象,简称原型,原型中保存着可以被构造方法创建的实例所共享的内容。

属性的查找顺序

  • 先在私有属性中查找,如果有则返回其值,如果没有则在原型中查找,如果原型没有则到原型链中查找,如果有则返回其值,如果没有则返回undefined。

二:原型链

  • 原型链:通过原型链继承,在原型之间建立起来的链式结构被称为原型链。

三、闭包

  • 所谓闭包就是指被定义在其他函数内部的函数

四、作用域链

  • 每个函数内部都有一个[[Scope]]属性,这个属性指向了一个集合,这个集合存储了该函数作用域变量对象地址和它上级作用域变量对象的地址,这个集合被称为作用域链。
  • 在操作变量时,先从当前作用域变量对象身上查找,如果有,则返回对应的值,如果没有则沿着作用域链向上查找,如果有则返回对应的值,以此类推,当找到window对象依然没有找到时,则报错。

你可能感兴趣的:(【JavaScript】,javascript)