SOURCE

class P {
    constructor(a) {
        this.a = a
    }
    fn1() {
        console.log(111)
    }
}
let p = new P('111')
console.log('P实例', p)
class S extends P {
    constructor(a, b) {
        super(a)
        this.b = b
    }
    fn2() {
        console.log(222)
    }
    static fn4() {
        console.log(444)
    }
}
let s = new S(111, 222)
console.log('S实例', s)
console.log('s原型链上级', s.__proto__)
console.dir(S)
s.fn1()
// constructor只会出现在原型链上 即s.__proto__才有constructor指向S实例的构造函数是谁
console.log('S实例的原型链上级是否是P实例', s.__proto__.__proto__.constructor === P) // true
function T(a) {
    this.a = a
}
T.prototype.fn3 = function () {
    console.log(333)
}
let t = new T(111)
console.log('T实例', t)
console.log('T的原型的构造函数是Object吗', T.prototype.__proto__.constructor === Object) // true
console.log('T的原型的原型是什么', T.prototype.__proto__) // Object的原型对象
console.log('函数的原型是Object实例吗', T.__proto__.__proto__.constructor === Object) // true
// 测试es6类是否可以继承ES5类 答:可以
class TT extends T {
    constructor(a, b) {
        super(a)
        this.b = b
    }
}
let tt = new TT(1, 2)
console.log('TT实例', tt)
console 命令行工具 X clear

                    
>
console