我们前面有一篇文章写了什么是作用域和作用域链!
首先我们要先在了解一下作用域:
一、作用域
在 Javascript 中,作用域分为 全局作用域 和 函数作用域
全局作用域:
代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域。也就是GO
函数作用域:
在固定的代码片段才能被访问!也就是AO,函数执行完毕AO消失,这些我们前面都有讲到;
其次:作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。
变量取值:到创建 这个变量 的函数的作用域中取值
//在这里插入代码比如
function fun1{
var a = 10;
}
function fun2{
var a = 20;
}
//
在上面代码中 两个相同的变量也不会有冲突!
那什么事作用域链呢!一个叫作用域,那我们把3个或多有联系的作用域链接在一起,那么他们就形成了像一根链子!就叫作用域链!
前面我们也讲过了作用域链,理解起来就和作用域一样,详细可以看上面文章!
在我的理解 原型链跟作用域链的理解是一样的,但原型链实现了一个功能 就是js 中的继承,何为继承,父亲的属性,子女也有,为什么我说可以和作用域链一样理解, 都是 ‘链’ 大家应该可以初步理解了,他们可以返回‘他的父亲’,‘爷爷’ ,在构造函数中写的一个属性,‘爷爷是双眼皮’, 那么他的儿子, 孙子, 都可以用这个属性!!
上面说完原型对象。下面要扒一扒proto、prototype、constructor。
proto:事实上就是原型链指针!!
prototype:上面说到这个是指向原型对象的
constructor:每一个原型对象都包含一个指向构造函数的指针,就是constructor
这个是网上的一个理解,这个意思我们可以理解出我们是可以在 某一代的原型中 增加或者修改原型链,只要我们能获取到那一代!
这是网上的一张图 大家可以配图去先理解一下!!