懵懂的js原型
说起原型,就得提起函数,js中据说是这样定义的,每个函数都有一个prototype 属性,(这个属性啊,又是个对象)。为了构造函数能复用,就引出了原型,要把共享的东西放到原型上去。例如
//构造函数,是个人的话,应该就有年龄,性别,名字,和人应该就有的天性,吃
function Person(name,age,sex){
this.name=name,
this.age=age,
this.sex=sex,
this.eat=function(){
alert('吃饭');
}
}
//实例一下
var p=new Person('dag',19,'男');
var p1=new Person('fff',30,'女');
p.eat();//吃饭
p1.eat();//吃饭
console.log(p.eat===p1.eat);//false
以上得出结论:虽然p.eat()与p1.eat() 运行出来的结果都是一样的,但是他们的函数确实不一样的,这样对计算机内存来说就是浪费,明明可以一个人搬到的事,为啥要找俩人呢。
由此引出原型 prototype,将共享出来的东西放到原型上
改为 :Person.prototype.eat=function(){
alert('吃饭');
}
再对比 p和p1两个对象
p.eat();//吃饭
p1.eat();//吃饭
console.log(p.eat===p1.eat);//true
说明 不管创建多少个对象,对象都是去找这个构造函数的原型上的方法。