js中什么是闭包?什么是原型链?什么是作用域?

it2023-07-08  69

**闭包:**即重用变量,又保护变量不被篡改的一种编程方式。

**本质:**外层函数作用域对象因为被内层函数应用着无法释放,形成了闭包。

闭包的三个步骤:

外层函数包裹内层函数和要保护的变量外层函数将内层函数返回到外部使用者调用外层函数获得返回的内存函数对象,保存在一个变量中,今后可以反复使用。

**闭包的缺点:**内存泄漏

**闭包的释放:**把外层函数置为null

嵌套函数体内作用域链上至少有三个对象。

**闭包形成的原因:**外层函数调用后,外层函数的作用域对象被内存函数的作用域链连着无法释放,从而形成了闭包。

作用域:

用法方面:一个变量的可用范围本质:保存变量的对象

为什么要有作用域?

​ 为了防止不同范围的变量相互干扰

js一共有几级作用域?(2级)

1. 全局作用域 2. 函数作用域

let作用域是ES6后来出现的,let作用域范围:到当前代码块的底部。

**作用域链:**多层作用域对象串联形成的链式结构。

什么是原型对象?

集中存储同一类型的所有子对象共用成员的父对象,这个父对象就叫原型对象。

原型链

多级原型对象逐级形成的连式结构

原型对象怎么来的?

每次创建构造函数的时候都会自动赠送一个空的原型对象。

如何访问到原型对象?

构造函数.prototype=原型对象

子对象.proto=原型对象

原型对象.contructor=构造函数

最新回复(0)