手写extends
注意
实现ES6 extends继承
答:
function SuperType(name) {
this.name = name
}
SuperType.sayHi = () => {
return 'hi, super'
}
SuperType.prototype.sayHello = () => {
return 'hello, super'
}
function SubType(name, age) {
SuperType.call(this, name)
this.age = age
}
function inherit(SubType, SuperType) {
SubType.prototype = Object.create(SuperType.prototype)
SubType.prototype.constructor = SubType
SubType.__proto__ = SuperType
}
inherit(SubType, SuperType)
// 测试
new SubType('zcl', 26)
SubType.sayHi() // hi, super
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

ES6的 <code>extends</code>实现,与JS寄生式组合继承十分相似,唯一不同的是 extends 把子类构造函数 <code>__proto__</code> 指向父类构造函数,继承父类的静态方法
编辑 (opens new window)
上次更新: 2025/07/20, 06:21:22