1. 作用域链作用
保证对执行环境有权访问的所有变量和函数的有序访问,通过作用域链,我们可以访问到外层环境的变量和函数。
2.作用域链概念
作用域链的本质上是一个指向变量对象的指针列表。
变量对象是一个包含了执行环境中所有变量和函数的对象。
作用域链的前端始终都是当前执行上下文的变量对象。
全局执行上下文的变量对象(也就是全局对象)始终是作用域链的最后一个对象。
当我们查找一个变量时,如果当前执行环境中没有找到,我们可以沿着作用域链向后查找。
3.原型链
当访问一个对象的属性时, 会在这个对象的属性上去找,如果没有找到就会去这个对象的--proto-- 上去找,即构造函数prototype 上找,如果没有会一直在--proto-- 上找,直到最顶层,不到即为undefined 。这样一层一层地向上,就彷佛一条链子串起来,所以就叫原型链。
4. 作用域链与原型链的区别
作用域链是相对于变量而言, 原型是相对于属性而言
作用域最顶层是window ,原型链最顶层是Object