JS高级--作用域、作用域链、闭包、原型、原型链、new关键字的作用等纯理论 (面试向)

作用域

作用域用于定义变量所处位置、限定变量的可用范围。
作用域类别:
全局作用域:window对象。
函数作用域:function内部。
块级作用域:一对大括号 条件语句 循环语句等 。
脚本作用域:用let和const在script标签中声明 变量 没有存储在window对象中 避免全局污染。

作用域链

作用域和作用域之间的相互关联 共同构成了作用域链。
特点:作用域链是线性有序的(它保证了变量的有序访问)。
作用域链顶端 就是全局作用域。
延长作用域链:try catch语句的catch块。

闭包

本质是函数作用域 它存储在了当前函数对象中的scope属性里(Closure 指向另外一个函数作用域的活动对象–活动对象中存储了对应函数的全部信息)。
闭包使当前函数作用域有权访问另外一个函数作用域的变量和函数。
常见的创建闭包的方式 :函数作用域的嵌套。
作用:避免全局污染。
缺点:可能会造成内存浪费,因为作用域嵌套后 在内层函数中存在外层函数的活动对象,只有当内层函数代码执行完毕后 外层函数的活动对象才会被销毁。

原型 prototype

每一个对象都有一个原型属性 它用于关联另一个对象。
关联后能使用另一个对象的属性和方法(原型式继承)。

原型链 __proto__

对象通过原型关联在一起 原型内有一个__proto__ 属性用于关联其他的原型。
如果读取对象的一个属性, 对象中没有此属性则会自动到 __proto__ 中查找此属性。

new关键字的作用

new关键字可以理解成创建对象的语法糖写法。
1.在函数内声明一个叫this的变量 并赋值为空对象。
2.设置this的属性__proto__ = 函数.prototype。
3.return this变量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值