/* // 定义一个Person类型
class Person{
// 构造函数
constructor(name,age,gender){
this.name = name,
this.age = age
this.gender = gender
}
// 给类添加一个方法
sayHi(){
console.log(this.name,this.age,this.gender);
}
//用这种方式定义的方法,是将方法定义到类的原型对象中去
sayHello(){
console.log('hello!');
}
} */
// 继承
/* // ES5:
// 定义一个人类
function Person(name, age, gender) {
this.name = name
this.age = age
this.gender = gender
}
Person.prototype.eat = function () {
console.log(`我叫${this.name},我在吃饭...`);
}
Person.prototype.say = function () {
console.log(`大家好!我叫${this.name} 今年${this.age}岁 性别是${this.gender}`);
}
// 通过Person类型,创建出了两个对象
let p1 = new Person('刘德龙', 20, '男')
p1.say()
p1.eat()
let p2 = new Person('高德政', 21, '男')
p1.say()
p1.eat()
console.log('-------------------------------------');
//定义了学生类
function Student(name, age, gender, no) {
// 继承Person类的属性
Person.call(this, name, age, gender)
// Student类特有的属性
this.no = no
}
// 给Student类的prototype属性 new 一个Person类型的对象
// 用于继承Person类的方法
Student.prototype = new Person()
Student.prototype.study = function () {
console.log(`我叫${this.name},我的学号是${this.no},我在学习...`);
}
let s1 = new Student('张三', 20, '女', '1001')
s1.study()
s1.eat()
s1.say() */
// ES6:
// 定义人类
class Person {
// 定义构造函数
constructor(name, age, gender) {
this.name = name
this.age = age
this.gender = gender
}
// 说话方法
say() {
console.log(`大家好!我叫${this.name} 今年${this.age}岁 性别是${this.gender}`);
}
// 吃方法
eat() {
console.log(`我叫${this.name},我在吃饭...`);
}
}
// 每个类型都一个prototype属性,我们称它为类的原型对象。
// 类的原型对象中的成员,给类的所有实例(实例就是类创建出来的对象)共享。
console.log(Person.prototype);
// 通过Person类型,创建出了两个对象
let p1 = new Person('刘德龙', 20, '男')
console.log(p1);
p1.say()
p1.eat()
let p2 = new Person('高德政', 21, '男')
console.log(p2);
p1.say()
p1.eat()
console.log('-------------------------------------');
// extends关键字,表示继承
class Student extends Person{
// 构造函数
constructor(name, age, gender,no){
// 调用父类的构造函数
super(name, age, gender)
// 学生特有的属性
this.no = no
}
//学生学习的方法
study(){
console.log(`我叫${this.name},我的学号是${this.no},我在学习...`);
}
}
let s1 = new Student('张三', 20, '女', '1001')
console.log(s1);
s1.study()
s1.eat()
s1.say()