js实现继承的几种方式是什么
问题描述:js实现继承的几种方式是什么
推荐答案 本回答由问问达人推荐
JavaScript中实现继承有以下几种方式:
1.原型继承
通过原型链实现继承,让子类的原型对象指向父类的实例对象,从而实现继承。
function Parent() {}
Parent.prototype.sayHello = function () {
console.log('Hello!');
};
function Child() {}
Child.prototype = new Parent();
const child = new Child();
child.sayHello();
2.构造函数继承
将子类的构造函数内部调用父类的构造函数,使用call或apply方法指定this指向。这样就可以实现从父类的实例对象继承属性和方法。
function Parent(name) {
this.name = name;
}
Parent.prototype.sayHello = function () {
console.log(`Hello, I'm ${this.name}!`);
};
function Child(name, age) {
Parent.call(this, name);
this.age = age;
}
const child = new Child('Alice', 6);
console.log(child.name); // Alice
console.log(child.age); // 6
3.组合继承
组合继承即将原型继承和构造函数继承结合起来使用。这种方式是目前比较常用的继承方式。
function Parent(name) {
this.name = name;
}
Parent.prototype.sayHello = function () {
console.log(`Hello, I'm ${this.name}!`);
};
function Child(name, age) {
Parent.call(this, name);
this.age = age;
}
Child.prototype = new Parent();
const child = new Child('Bob', 8);
console.log(child.name); // Bob
console.log(child.age); // 8
child.sayHello(); // Hello, I'm Bob!
4.class继承
使用ES6中的class关键字实现继承。使用extends关键字指定父类,使用super关键字调用父类构造函数和方法。
class Parent {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, I'm ${this.name}!`);
}
}
class Child extends Parent {
constructor(name, age) {
super(name);
this.age = age;
}
}
const child = new Child('Carol', 7);
console.log(child.name); // Carol
console.log(child.age); // 7
child.sayHello(); // Hello, I'm Carol!
查看其它两个剩余回答