Open goldEli opened 4 years ago
js中为保证对象和对象的关系,引入了原型和原型链。js是通过构造函数来创建对象。而原型定义了一个构造函数创建出来对象的公共祖先。 每个构造函数都有一个prototype属性,指向原型对象。原型对象里面存放的东西是构造函数创建实例中公有的内容。即所有的对象都是由他的原型对象继承而来,所有的对象也可以作为原型对象,让其他对象去继承。 访问对象属性的时候,它会在当前对象自身的属性内查找,如果没有再往上去他原型对象的属性中查找,而原型对象也是一个对象,他也有他自己的原型对象。如果在自身属性中没找到就会再往上查找,这样一层层往上追溯,形成了一个类似链表结构,就是原型链。
__proto__
,指向他的构造函数中的原型对象 prototype(原型对象中保存着实例对象的共有属性),即实例对象的__proto__
属性和构造函数的prototype属性指向的是同一个对象。同时每一个原型对象也有自己的私有属性__proto__
,指向他的原型对象。JS中所有的实例对象最终都指向了Object的prototype属性。Object中的__proto__
属性指向为null。
什么是原型?什么是原型链?