**都2020了,你还不会js继承?**

都2020了,你还不会js继承?
如何实现js继承,不难不难,看这里!

  • 第一种,使用call
 function Parent1(){
   this.name = 'parent1';
 }
 Parent1.prototype.add=function(){
   console.log('add');
 }
 function Child1(){
   Parent1.call(this);
   this.type = 'child1'
 }

缺点:只能继承父类构造函数上的特性,原型对象上的继承不了!

  • 第二种 借助原型链
   function Parent2() {
     this.name = 'parent2';
     this.play = [1, 2, 3]
   }
   function Child2() {
     this.type = 'child2';
   }
   Child2.prototype = new Parent2();
   var s1 = new Child2();
   var s2 = new Child2();
   s1.play.push(4)
   console.log(s1);
   console.log(s2);

这种有一个问题,就是你单独改变了s1上的数组play,而去访问s2的时候,s2也同样改变了。
最好的实现,中间省略了其他的实现方法

  function Parent5 () {
    this.name = 'parent5';
    this.play = [1, 2, 3];
  }
  function Child5() {
    Parent5.call(this);
    this.type = 'child5';
  }
  Child5.prototype = Object.create(Parent5.prototype);
  Child5.prototype.constructor = Child5;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值