ES6的继承其实可以说就是对ES5的继承机制的包装和一些优化 , 其背后还是原型链 。
继承基础
ES6 类支持单继承。使用 extends 关键字,就可以继承任何拥有[[Construct]]和原型的对象。
它会继承父类上的原型方法 , 静态成员 , 以及 constructor (需要配合 super)
很大程度上,这意味着不仅可以继承一个类,也可以继承普通的构造函数(保持向后兼容)
class Fclass1 {
}
// 第一种继承方法
class Sclass1 extends Fclass1 {
// ... 子类里的内容
}
// 第二种继承方法
let Sc1 = class extends Fclass1 {
// ... 子类的内容
}
// 继承普通函数
function fun() {
}
let Scfun = class extends fun {
// ... 子类的内容
}
let scl = new Sclass1()
let sc = new Sc1()
let scfun = new Scfun
console.log(scl instanceof Fclass1); // ture
console.log(sc instanceof Fclass1); // ture
console.log(scfun instanceof fun); // ture
派生类(子类)都会通过原型链访问到类和原型上定义的方法。this 的值会反映调用相应方法的实例或者类
就是 定义到原型上的方法 , 在实例调用时会返回的 this 是调用者
而静态的方法 ,在调用时 this 返回的是改静态方法所在的类。
class F2 {
Fproto() {
console.log('F2里的原型方法 ,this 为调用者'