继承

ES6之前,并没有给我们提供extends继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承

1、借用构造函数继承

核心原理:通过call()把父类型的this指向子类型的this,这样就可以实现子类型继承父类型的属性。

继承属性

// 借用父构造函数继承属性
function Father(uname, age) {
  // this 指向父构造函数的对象实例
  this.uname = uname;
  this.age = age;
}
function Son(uname, age, score) {
  // this指向子构造函数的对象实例
  Father.call(this, uname, age);
  this.score = score;
}
var son = new Son('刘德华', 18, 100);
console.log(son);

继承方法

// 1.父构造函数
function Father(uname, age) {
  // this 指向父构造函数的对象实例
  this.uname = uname;
  this.age = age;
}
Father.prototype.money =function() {
  console.log(100000);
}
// 2. 子构造函数
function Son(uname, age, score) {
  // this 指向子构造函数的对象实例
  Father.call(this, uname, age);
  this.score = score;
}
Son.prototype = new Father();
// 如果利用对象的形式修改了原型对象,别忘了利用constructor 指回原来的构造函数
Son.prototype.constructor = Son;
// 这是子构造函数专门的方法
Son.prototype.exam = function() {
  console.log('孩子要考试');
}
var son = new Son('刘德华', 19, 100);
console.log(son);

原文地址:https://www.cnblogs.com/guwufeiyang/p/13125689.html