构造函数继承和原型继承
时间: 2023-11-27 08:00:53 浏览: 141
构造函数继承和原型继承都是 JavaScript 中实现继承的方式,但它们的实现方式不同。
构造函数继承是指在子类的构造函数中调用父类的构造函数来继承父类的属性和方法。这种方式的优点是可以传递参数,可以继承私有属性和方法,但缺点是无法继承父类原型上的方法。
原型继承是指让子类的原型对象指向父类的实例,从而继承父类的属性和方法。这种方式的优点是可以继承父类原型上的方法,但缺点是无法传递参数,无法继承私有属性和方法。
例如,以下是构造函数继承和原型继承的示例代码:
构造函数继承:
```js
function Parent(name) {
this.name = name;
}
Parent.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
}
function Child(name, age) {
Parent.call(this, name);
this.age = age;
}
let child = new Child('Tom', 10);
console.log(child.name); // Tom
console.log(child.age); // 10
child.sayHello(); // TypeError: child.sayHello is not a function
```
原型继承:
```js
function Parent(name) {
this.name = name;
}
Parent.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
}
function Child(name, age) {
this.age = age;
}
Child.prototype = new Parent('Bob');
let child = new Child('Tom', 10);
console.log(child.name); // Tom
console.log(child.age); // 10
child.sayHello(); // Hello, Tom
```
阅读全文