关于JavaScript中的继承

js中面向对象有三大特征,我们都知道,为封装,继承,多态。今天来聊聊继承。

继承,可以说是类型与类型之间的关系 [构造函数与构造函数之间的关系]。

那么,继承的目的是什么呢,是为了把子类型中公共的代码提取到父类型,实现代码重用

js中的两种继承,原型继承和借用构造函数继承。

  • 原型继承:
function Super() {
  this.color = 'red';
}
function Sub() {
}

Sub.prototype = new Super();
Sub.prototype.constructor = Super;

var sub = new Sub();
console.log(sub.color);

原型继承的缺点:无法给构造函数传参。

  • 借用构造函数传参:
function Person(name, age, sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
}
function Student(name, age, sex, score) {
  Person.call(this, name, age, sex);
  this.score = score;
}
var stu = new Student('zs', 18, '男', 100);
console.log(stu);

借用构造函数继承的缺点:无法重用方法。

两种继承都有缺点,怎么办呢,于是就有了组合继承。

  • 组合继承:
// 结合原型继承和组合式继承
function Person(name, age, sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
}
Person.prototype.sayHi = function () {
  console.log(this.name);
}
function Student(name, age, sex, score) {
  Person.call(this, name, age, sex);
  this.score = score;
}
Student.prototype = new Person();
Student.prototype.constructor = Student;

var stu = new Student('zs', 18, '男', 100);
console.log(stu);

组合继承结合了原型继承和借用构造函数继承的优点,思路就是使用原型链实现对原型属
和方法的继承,又通过借用构造函数实现对实例对象属性的继承。这样,方法能够重用,每个示例对象也能够有自己的属性。是Js中最常用的继承模式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值