1.在JS中,每个函数都有一个prototype属性,该属性指向一个对象(即原型对象),该对象用于包含该函数(即JS中的类)所有实例可以共享的属性和方法。
2.只要新创建了一个函数,就会根据某种规则给该函数创建一个prototype属性,该属性指向函数的原型对象,在默认情况下,所有原型对象都会自动获得一个constructor属性,该属性指向prototype属性所在函数的指针。
3.function Animal(category){
this.category=category;
this.say=function(){
console.log(" my category is "+this.category);
};
}
Animal.prototype={
//constructor:Animal,
name:"Animal",
sex:"M",
food:"",
eat:function(){
console.log("I like eat "+this.food);
},
say:function(){
console.log("hi,I am in prototype"+this.name);
}
};
console.log((Animal.prototype.constructor==Animal));//false
注意当将一个对象字面量赋值给一个类的prototype时,相当于重写了原型对象,此时的constructor就不会指向该构造函数了,为了修复这个bug,添加一行上面所示的红色代码