四种继承方式实例

博客分类: 笔记 阅读次数: comments

四种继承方式实例

//声明一个父类
function Person(name, age, sex, weight) {
  this.name = name;
  this.age = age;
  this.sex = sex;
  this.weight = weight;
}
//给父类加一个方法
Person.prototype.sayHi = function() {
  box.innerHTML = "你好";
};
//原型继承
//声明一个子类
function Student(score) {
  this.score = score;
}

//将人类的属性和方法继承给学生
Student.prototype = new Person("A", 10, "", "50kg");

//这时再声明一个学生的子类
var stu1 = new Student("100");
box.innerHTML =
  stu1.name +
  "是一个" +
  stu1.age +
  "岁的" +
  stu1.sex +
  "生,体重" +
  stu1.weight +
  "最好的一次成绩是" +
  stu1.score;
stu1.sayHi();

//声明另一个学生
var stu2 = new Student("120");
stu2.name = "B";
stu2.age = 20;
stu2.sex = "";
box.innerHTML =
  stu2.name +
  "是一个" +
  stu2.age +
  "岁的" +
  stu2.sex +
  "生,体重" +
  stu2.weight +
  "最好的一次成绩是" +
  stu2.score;

//构造函数继承
//再声明一个父类
function Programmer(work) {
  this.work = work;
}
//声明一个学生函数
function Student(name, age, sex, score, work) {
  //通过构造函数将父类的属性复制过来
  Person.call(this, name, age, sex);
  Programmer.call(this, work);
  this.score = score;
}

// 创建一个学生实例
var stu1 = new Student("小明", 10, "", "100", " 'ctrl + c,ctrl+v'");
box.innerHTML =
  stu1.name +
  "是一个" +
  stu1.age +
  "岁的" +
  stu1.sex +
  "生,体重" +
  stu1.weight +
  "最好的一次成绩是" +
  stu1.score +
  "我还会" +
  stu1.work;
stu1.sayHi();
var stu2 = new Student("小红", 20, "", "20kg", "120");
box.innerHTML =
  stu2.name +
  "是一个" +
  stu2.age +
  "岁的" +
  stu2.sex +
  "生,最好的一次成绩是" +
  stu2.score;

//组合继承
//    声明一个学生函数
function Student(name, age, sex, score) {
  //通过构造函数将父类的属性复制过来
  Person.call(this, name, age, sex);
  this.score = score;
}
//  将人类的属性和方法继承给学生
Student.prototype = new Person();
//给学生原型增加一个方法
Student.prototype.stady = function() {
  box.innerHTML = "今天要努力学习";
};
//创建学生实例
var stu1 = new Student("小明", 10, "", "100");
box.innerHTML =
  stu1.name +
  "是一个" +
  stu1.age +
  "岁的" +
  stu1.sex +
  "生,最好的一次成绩是" +
  stu1.score;
stu1.stady();
var stu2 = new Student("小红", 20, "", "120");
box.innerHTML =
  stu2.name +
  "是一个" +
  stu2.age +
  "岁的" +
  stu2.sex +
  "生,最好的一次成绩是" +
  stu2.score;
stu2.stady();
//寄生继承
// 先创建一个子类

function Student() {
  var boy = new Person(); //子类里用一个新变量实例化父类对象,返回新变量
  boy.sex = "";
  boy.work = "学生";
  return boy;
}

var stu1 = new Student();
box.innerHTML = stu1.sex + stu1.work;
var stu2 = Student();
box.innerHTML = stu2.sex + stu2.work;