类的继承
类的继承
- 定义: 使用extends和super关键字实现继承
class Person { constructor(name, age) { this.name = name this.age = age } eating(params) { console.log(this.name + '吃了' + params) } drinking(water){ return water + this.name } } /* 使用extends关键字使子类继承父类 */ class Student extends Person { constructor(name, age, book) { /* 在子类构造函数中,先调用super构造函数,主要用来调用父类的构造函数,传入对应的参数 */ super(name, age) this.book = book /* 同时也可以通过super调用父类中的方法(包括静态方法) */ this.water = super.drinking(water) } read() { console.log(this.book) } } let stu1 = new Student('nano', 19, 'vue权威指南') stu1.eating('饭') --> nano吃了饭 stu1.read() -->权威指南
子类对父类方法的重写
- 定义: 在子类中写一个与父类同名的方法,会优先调用子类中的方法
class Person { constructor(name) { this.name = name } eating(params) { console.log(this.name + '吃了' + params) } } /* 使用extends关键字使子类继承父类 */ class Student extends Person { constructor(name) { /* 在子类构造函数中,先调用super构造函数,主要用来调用父类的构造函数,传入对应的参数 */ super(name) } /* 写一个与父类同名的方法eating,进行方法的重写 */ eating(params) { /* 同时可以通过super复用父类中的方法逻辑 */ super.eating('饭') console.log('子类吃吃吃!'+params ) } } let stu1 = new Student('nano') stu1.eating('饭') --> nano吃了饭 子类吃吃吃!饭
继承内置类
class NanoArray extends Array {
firstItem() {
return this[0]
}
}
let arr = new NanoArray(1, 2, 3)
console.log(arr.firstItem()) --> 1
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!