// 手写一个继承函数,允许一个构造函数继承另一个构造函数的属性和方法
// 声明一个继承函数,传入一个子类构造函数和一个父类构造函数,实现子类继承父类的属性和方法
function inherit(childConstructor, parentConstructor) {
// 使用Object.create()创建一个以父构造函数原型为原型的对象
childConstructor.prototype = Object.create(parentConstructor.prototype)
// 将子构造函数的原型的constructor属性指向子构造函数本身
childConstructor.prototype.constructor = childConstructor
}
// 实例用法
function Parent(name) {
this.name = name
}
Parent.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
}
function Child(name, age) {
Parent.call(this, name) //调用父构造函数以继承属性
this.age = age
}
// 使用inherit实现继承
inherit(Child, Parent)
// 创建一个子类实例并调用父类的方法
const child = new Child('Alice', 10)
child.sayHello() // 输出:Hello, my name is Alice
console.log(child.age); //输出10
帮助各位前端学习者更容易理解继承的概念!