关于原型链的那些事
什么是原型?
对于任意一个对象,都有原型对象,每一个对象都有一个内部属性[[prototype]],这个属性对应的就是对象的原型,对于对象而言,内部属性[[prototype]]是不可见的,于是提供了_proto_属性来访问原型对象和方法。eg:student.proto === Person.prototype。
这里又出现了一个prototype属性,对于函数对象而言,创建时就会有一个prototype属性,当实例化一个对象的时候,函数对象的prototype属性即作为原型赋值给对象实例(即构造实例对象的_proto_属性)
对于所有对象原型链的终点都指向null
如图:
定义一个构造函数Person和它的实例对象student
运行结果: