JavaScript——继承

学习一下 b继承a的方法~

原型链继承

新实例的原型等于父类的实例

function Animal(name){   
 this.name = name;   
 this.showName = function(){   
  alert(this.name);   
 }   
}

function Cat(name){  
  this.name = name;  
}
Cat.prototype = new Animal();//原型链继承

实例可继承的属性有:

  • 实例的构造函数的属性
  • 父类构造函数属性
  • 父类原型的属性
    (父类的实例不能被继承~)

(翻了高级程序设计这本书 里面的图有利于理解:)
代码:
请添加图片描述
继承指向:
请添加图片描述

借用构造函数

也称为 对象冒充,伪造对象,经典继承

子类型构造函数的内部调用超类型构造函数

function Animal(name){   
 this.name = name;   
 this.showName = function(){   
  alert(this.name);   
 }   
}
Animal.prototype.run = function () {
   return this.name  + ' are both' + this.age;
};

function Cat(name){  
  Animal.call(this, name);  //对象冒充,给超类型传参
}

var cat = new Cat("Black Cat");  

–Cat对象能直接调用Animal的方法以及属性

继承了父类构造函数的属性,在子实例中可向父实例传参
缺点:
方法都在构造函数中定义,函数复用无从谈起
原型链定义的方法对子类型不可见的

组合继承

function Animal(name){   
 this.name = name;   
 this.showName = function(){   
  alert(this.name);   
 }   
}
Animal.prototype.run = function () {
   return this.name  + ' are both' + this.age;
};

function Cat(name){  
  Animal.call(this, name);  //对象冒充,给超类型传参
}
Cat.prototype = new Animal();//原型链继承

var cat = new Cat("Black Cat");   

cat.showName(); 

原型链继承可以继承原型属性和方法,构造函数继承可以继承实例属性,即实现了函数复用,又保证实例也有自己的属性方法。常用这个方法~

还有一些 :

  1. 原型式继承:

object.create(),接收两个参数,一个是新对象的原型,一个(可选)是为新对象额外定义属性的对象
包含引用类型值的属性会共享相应的值!

  1. 寄生式继承:

createAnother()传递对象作为原型,该对象传递给object() (类似原型式),增强新对象再返回
请添加图片描述
该方法不能做到函数复用,与 对象冒充类型

  1. 组合寄生继承
    集寄生式继承与组合继承的优点
    请添加图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值