作用域链:
函数执行会形成一个私有的作用域,形参和在当前私有作用域中声明的变量都是私有变量,当前的私有作用域有自我保护机制,私有变量中遇到一个非私有的变量,则向它的上级作用域找,如果还不是上级作用域私有的,则继续向上查找,一直找到window为止。这种变量一层层向上查找的机制:作用域链机制。
原型链:
可以这么理解,比如我们平常调用数组的各种常用方法。这些方法哪里来?都是通过扩展prototype。prototype就是翻译过来就是原型的意思。比如数组原型中没有toString方法、但是我们去调用却不会报错。正常运行、在js中万物皆对象,每个每个实例对象都会有_proto_、proto两边的下划线就像链子一样,他就是原型链。这就是_proto_的作用、prototype就是能放公用方法、属性的地方。就是我们最常用的就是扩展prototype。在prototype里面加方法属性、以及重写原来的函数。而原型链就是相当于去自动查找共享对象方法、属性的链子。如果没有原型链、要使用toString方法的话就必须在数组里面添加这个方法、若还有其他类型都需要使用这个方法、那每种都要加上这个方法、就会非常冗余
。
网友评论