众所周知原型是js中的一大难点今天就带领大家了解一些原型链的一些基本知识.
要说原型链的话就不得提到函数以及构造函数,普通函数这里就不过多的提了,所谓的构造函数就是普通的函数在调用的时候用了new来调用,(说人话就是用new调用的函数就是构造函数).每一个构造函数都会自动的生成一个原型对象 列如
function person () {
this.obj = obj
this.age = age
}
let p1=new person()
在这个列子中person就是构造函数p1就是实列对象,原型对象是系统帮我们生成的.
构造函数有一个属性prototype指向原型对象
原型对象有一个属性constructor指向构造函数
实列对象也有一个属性__proto__指向原型对象
这就是三者之间的关系
原型对象也是一个对象也会有自己的原型,然而原型的原型也会有原型......之前说过了原型对象是由构造函数生成的那么原型的原型也会有一个与之对应的构造函数
介绍起来可能会把人个弄晕看下图
这样的原型对象生成的链式结构就叫原型链,原型链不会没有尽头,如果一直找下去那么会得到一个null