<script>
//原型的作用之一:共享数据,节省内存空间
//构造函数
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();
console.dir(Person);
console.dir(per);
</script>
构造函数创建实例对象,构造函数里面有个prototy属性,prototy属性就是原型对象,原型对象里有个构造器constructor,这个构造器就是指向自己的构造函数,它里面的eat方法可以被实例对象共享,实例对象中虽然本身没有eat方法,但是它有__proto__这个原型对象,而eat方法存在于__proto__中(换句话说,__proto__指向它所在的构造函数的原型对象,而原型对象中有eat方法,所以实例对象可以使用eat方法。)
总结:
* 构造函数可以实例化对象
* 构造函数中有一个属性叫prototype,是构造函数的原型对象
* 构造函数的原型对象(prototype)中有一个constructor构造器,这个构造器指向的就是自己所在的原型对象所在的构造函数
* 实例对象的原型对象(__proto__)指向的是该构造函数的原型对象
* 构造函数的原型对象(prototype)中的方法是可以被实例对象直接访问的