call() 和 apply() 继承

1、什么是继承?

一个构造函数继承另一个构造函数中的方法; 可以省去大量的重复。

2、优缺点

优点:
创建子类实例时,可以向父类的构造器传参;
缺点:
只能继承构造器中定义的属性和方法,不能继承原型上定义的属性和方法.

3、代码

function Man(name, age) {
    this.name = name;
    this.age = age
  }


  var person = new Man('tom', 19)
  console.log(person)   // Man {name: "tom", age: 19}
  function Woman(name, age) {
    this.sex = 'woman';
    // Man.call(this, name, age)     // Woman {sex: "woman", name: "july", age: 20}   // call适合固定参数的继承
    // Man.bind(this, name, age)        // Woman {sex: "woman"}
    // Man.apply(this, [name, age])  // Woman {sex: "woman", name: "july", age: 20}
    Man.apply(this, arguments)  // Woman {sex: "woman", name: "july", age: 20}    // apply适合不定参数的继承
    console.log(arguments)
    // this.name = name;
    // this.age = age
  }


  var person1 = new Woman('july', 20);
  console.log(person1)   // Woman {sex: "woman", name: "july", age: 20}
  console.log(person)   // Man {name: "tom", age: 19}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值