当我们使用构造函数new的方式创建实例对象,此时构造函数的.prototype属性就是实例对象的原型对象,实例对象可以通过.__proto__来访问到原型对象,同时实例对象会继承原型对象的属性方法。
构造函数和原型对象的关系其实是被包含的关系,通过prototype.constructor就和可以访问到构造函数。
当我们访问一个对象的属性,如果当前对象没有这个属性,那么就会去原型上找,如果原型上没有,那就去原型的原型去找,直到找到为止,null是最顶层,这种链式的访问就是原型链。
其实每个对象都有自己的原型,除了null,因为null就是最顶层了。