原型链继承
//构造父函数
function Animal(){
this.age=18
}
//构造子函数
function Dog(){
this.name='abc'
}
//令子函数的原型对象为父函数
Dog.prototype=new Animal()
var dog=new Dog()
console.log(dog.age) //18
console.log(dog.name) //'abc'
原型链继承缺点:①数据共享②无法为父函数传参
构造函数继承
//构造父函数
function Animal(n){
this.name=n
}
//构造子函数
function Dog(n){
//改变子函数的this指向
Animal.call(this,n)
this.age=18
}
var dog=new Dog('大黄')
console.log(dog.age) //18
console.log(dog.name) //'大黄'
构造函数继承缺点:智能继承父类构造函数的属性和方法,不能继承父类原型上的方法。