<JavaScript> 寄生继承详解

// 将原型继承和非原型继承组合为一体的继承方式叫做组合继承,但是这种方法的继承是有一点小缺陷的,下级函数继承了无用的属性,所以我们有了寄生继承来解决污染问题;

//创建上级构造函数-食物

function Food(name, hot, taste){ this.name = name; this.hot = hot; this.taste = taste; } //为了清楚的注释过程,我们分开写上级构造函数的原型方法-变质  Food.prototype.bad = function(){ console.log("保质期3天"); }; //创建下级构造函数-面包 function Bread(name, hot, taste, brand){ //这里是借用上级函数的静态属性,也叫非原型继承  Food.apply(this, arguments); //自己的属性 this.brand = brand; } //创建一个空的函数 var fn = function(){}; //将空函数原型替换为上层函数的原型,这样的空函数没有了私有属性,而且原型吃的还是人家的是不是和寄生虫一样呢?  fn.prototype = Food.prototype; //使用空函数实例赋值给下级函数原型,这样有回到了我们的原型继承,这次继承的是fn的原型,很干净  Bread.prototype = new fn(); //当然还原constructor还是必须的,但是这里不能写 read.constructor = Bread 因为Bread.constructor是 Function () {};  Bread.prototype.constructor = Bread; //下面创建下级函数自己的原型方法,值得注意的是扩展自身原型之前完成继承,不然会有覆盖问题  Bread.prototype.dry = function(){ console.log("一天不吃咬不动了!"); } //下面我们可以有下级元素创建实例测试了 var bread = new Bread("脏脏包", "1000k", "sweet", "golden phinex");

转载于:https://www.cnblogs.com/isAndyWu/p/11546727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值