首先必须明确的是,prototype属性属于构造函数,__proto__属于对象,constructor属于对象和prototype对象。
定义一个Person构造函数
function Person(){
}
Person.prototype.name="VisonYH";
Person.prototype.age=23;
Person.prototype.job='xx';
Person.prototype.sayname=function(){
console.log(this.name);
}
新建两个对象person1和person2
则Person的prototype属性,prototype的constructor,person1和person2的__proto__属性以及constructor属性的关系如下图:
代码验证如下:
function Person(){
}
Person.prototype.name="weiyihao";
Person.prototype.age=29;
Person.prototype.sayname=function(){
console.log(this.name);
}
var person1=new Person('weiyihao',23,"xxx");
var person2=new Person('weiyihao2',22,'ddd');
console.log(Person.prototype.constructor) // [Function: Person]
console.log(Person.prototype)
console.log(Person.prototype.constructor==person2.constructor); //true
console.log(person2.__proto__) // Person { name: 'weiyihao', age: 29, sayname: [Function] }