前言
继承
1.借用构造函数继承也叫经典继承
2.原型链继承
3.组合继承 1 + 2
1.经典继承
借用构造函数实现继承
// 创建父构造函数
function Animal(type,weight,age,length){
this.type = type;
this.weight = weight;
this.age = age;
this.length = length;
};
Animal.prototype = {
constructor:Animal,
sayType:function(){
console.log(this.type);
}
}
// 创建子构造函数
function Dog(type,weight,age,length,name,color){
// 调用父构造函数继承属性 Animal() 父构造函数this指向父构造函数创建实例
//1. 借用构造函数继承 经典继承 将父构造函数this指向子构造函数实例
Animal.call(this,type,weight,age,length);
this.name = name;
this.color = color;
};
代码运行结果如下:
2.原型链继承
破坏原型实现继承
// 将子构造函数原型对象指向父构造函数实例
Dog.prototype = new Animal();
// 将子构造函数原型构造者该为子构造函数
Dog.prototype.constructor = Dog;
Dog.prototype.sayType = function(){
console.log(this.type,'子构造函数原型方法');
}
var d1 = new Dog('狗','40kg',10,'40cm','可乐','白色');
console.log(d1);
d1.sayType();
console.log(d1.constructor);
代码运行结果如下:
子类实例访问方法或者属性:
1.先去自身寻找
2.自身没有向子构造函数原型对象中去寻找
3.破坏原型链 向父构造函数原型对象中去寻找
3.组合继承
组合继承就是两种继承结合使用