此例中:
构造器Person;
构造器原型 Person prototype;
当自定义构造器函数创建时,prototype属性也创建了;
默认情况下,原型包含了constructor属性,这个constructor属性(该consturctor不同于自定义构造器函数,特用英文词;只是构造器原型中的一个属性)又指向回该构造器函数;

function Person(){
    
    Person.prototype.name = "Yan";
    Person.prototype.age = 22;
    Person.prototype.job = "Doctor";
    Person.prototype.sayName = function(){
        console.log(this.name);
    };
}
person1 = new Person();

person2 = new Person();

Person()为自定义构造器函数;Person包含了prototype属性;

prototype属性中包含了constructor属性;在此例中,prototype上还添加了变量name, age, job以及方法sayName;

由构造器函数生成的实例person1, person2都有一个内部指针([[prototype]])指向构造器的原型(Person prototype);

此例中:
构造器:PersonParent;
构造器原型:PersonParent prototype;  
当Person的原型又是另外一个构造函数(如,PersonParent)原型的实例;则Person的原型中的constructor指向PersonParent构造器,而Person原型中的[[prototype]]又会指向另外一个构造函数PersonParent原型;该构造器原型的constructor属性又会指向回构造器PersonParent;
依次形成原型链;