原生js面向对象继承
时间: 2023-12-12 14:04:29 浏览: 83
在原生 JavaScript 中,可以通过构造函数和原型链来实现面向对象继承。具体实现方式如下:
1. 构造函数继承
构造函数继承是通过在子类构造函数中调用父类构造函数来实现的。这种方式的缺点是无法继承父类原型上的方法和属性。
```javascript
function Parent(name) {
this.name = name;
}
function Child(name, age) {
Parent.call(this, name);
this.age = age;
}
var child = new Child('Tom', 18);
console.log(child.name); // Tom
console.log(child.age); // 18
```
2. 原型链继承
原型链继承是通过将子类的原型指向父类的实例来实现的。这种方式的缺点是所有子类实例共享父类实例上的属性和方法。
```javascript
function Parent() {
this.name = 'parent';
}
Parent.prototype.sayHello = function() {
console.log('Hello');
};
function Child() {}
Child.prototype = new Parent();
var child1 = new Child();
var child2 = new Child();
console.log(child1.name); // parent
console.log(child2.name); // parent
child1.sayHello(); // Hello
child2.sayHello(); // Hello
```
3. 组合继承
组合继承是将构造函数继承和原型链继承结合起来使用的一种方式。这种方式既可以继承父类实例上的属性和方法,也可以继承父类原型上的属性和方法。
```javascript
function Parent(name) {
this.name = name;
}
Parent.prototype.sayHello = function() {
console.log('Hello');
};
function Child(name, age) {
Parent.call(this, name);
this.age = age;
}
Child.prototype = new Parent();
Child.prototype.constructor = Child;
var child = new Child('Tom', 18);
console.log(child.name); // Tom
console.log(child.age); // 18
child.sayHello(); // Hello
```
阅读全文