构造函数与原型对象和实例对象的关系


构造函数与原型对象和实例对象的关系

//通过构造函数实例对象,并初始化
//var arr=new Array(10,20,30,40);
//join是方法,实例对象调用的方法
//arr.join("|");
//console.dir(arr);
//join方法在实例对象__proto__原型
//console.log(arr.__proto__==Array.prototype);


//原型的作用之一:共享数据,节省内存空间
//构造函数
function Person(age,sex) {
  this.age=age;
  this.sex=sex;
}
//通过构造函数的原型添加一个方法
Person.prototype.eat=function () {
  console.log("明天中午吃完饭就要演讲,好痛苦");
};
var per=new Person(20,"男");
// per.__proto__.eat();
per.eat();
// per.eat();


//构造函数,原型对象,实例对象之间的关系

console.dir(Person);
//console.dir(per);

结论 构造函数中的prototype 即Person.prototype == 实例对象中的proto 即per.proto 两者共用一块内存空间即 per.proto指向Person.protoype

而构造函数中的prototype的constructor构造器指向的自身