1、原型是一个对象、其它对象可以通过它来实现属性的继承
2、prototype是函数对象(function( ){ },typeof 类型是function)才拥有的属性;普通对象({ },typeof 类型是object)没有
3、构造函数的实例是普通对象,typeof 类型是object
4、prototype对象里有constructor属性,它指向该原型对应的构造函数
5、每一个构造函数的实例都有一个__proto__内部属性,它指向该实例对应构造函数的prototype
6、原型继承
function Animal(){this.type = ’ 动物’}
function Cat(name,color){
this.name = name;
this.color = color
}
Cat.prototype = new Animal()
var cat = new Cat('小可爱','red')
7、通过改变this指向继承其它对象的属性
function Animal(){this.type = ’ 动物’}
function Cat(name,color){
Animal.apply(this) //Animal在当前对象中执行,不会继承原型中的属性
this.name = name;
this.color = color
}
8、寄生继承
function object(o) {
function F() {
this.sex = ’ man’;
this.year = 2020
};
F.prototype = o;
return new F();
}
var bb = {
name: 'abc',
age: 2
}
var obj = object(bb)
9、组合继承
function Animal(){this.type = ’ 动物’}
function Cat(name,color){
Animal.apply(this) //Animal在当前对象中执行,不会继承原型中的属性
this.name = name;
this.color = color
}
Cat.prototype = new Animal()
10、当原型和构造函数自身的属性名相同时,先用自身的属性