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