举People类拥有的属性和方法Student类都有,Student类还扩展了一些属性和方法
Student"是一种" People,两类之间是"is a kind of"关系。
这就是继承关系:Student类继承自People类
继承
继承描述了两个类之间的"is a kind of"关系,比如学生“是一种”人,所以人类和学生类之间就构成了继承关系
People是“父类” (或“超类”、“基类”);Student是“子类”(或“派生类”)
子类丰富了父类,让类描述得更具体。更细化
JavaScript中如何实现继承
实现继承的关键在于:子类拥有父类的全部属性和方法,同时子类还应该定义自己特有的属性和方法
使用JavaScript特有的原型链特性来实现继承,是普遍的做法
在ES6中回学习新的继承方法
关键语句,实现继承
将Student.prototype指向people实例
Student.prototype = new People();
<script>
// 父类,人类
function People(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
People.prototype.sayHello = function(){
console.log('我是' + this.name + ',我' +this.age + '岁了');
}
People.prototype.sleep = function(){
console.log(this.name + '在睡觉,zzzzzzz');
}
// 子类,学生类
function Student(name,age,sex,school,studentNumber){
this.name = name;
this.age = age;
this.sex = sex;
this.school = school;
this.studentNumber = studentNumber;
}
// 关键语句,实现继承
Student.prototype = new People();
Student.prototype.study = function(){
console.log(this.name + '正在学习');
}
Student.prototype.exam = function(){
console.log(this.name + '正在考试,加油!');
}
// 方法重写、复写 (override) 父类的sayHello
Student.prototype.sayHello = function(){
console.log('敬礼!我是' + this.name + ',我' +this.age + '岁了');
}
// 实例化
var hanmeimei = new Student('韩梅梅',9,'女','慕课小学',100000);
hanmeimei.study();
hanmeimei.sayHello();
hanmeimei.sleep();
// 人类 实例化
var laowang = new People('老王',66,'男');
laowang.sayHello();
// laowang.study(); 报错
</script>