在 JavaScript 中,实现对象之间的继承可以使用多种方式。以下是其中的六种常见方式:
1、原型链继承(Prototype Chain Inheritance):
在这种方式中,通过将一个构造函数的实例指定为另一个构造函数的原型来实现继承。子类将继承父类原型上的属性和方法。代码如下:
function Parent() { this.name = 'Parent'; } function Child() {} Child.prototype = new Parent(); Child.prototype.constructor = Child;
2、构造函数继承(Constructor Inheritance):
在构造函数继承中,通过在子类构造函数内部调用父类构造函数来实现继承。这样子类实例会拥有父类构造函数中定义的属性和方法。代码如下:
function Parent() { this.name = 'Parent'; } function Child() { Parent.call(this); }
3、组合继承(Combination Inheritance):
组合继承是原型链继承和构造函数继承的结合,既通过原型链继承原型上的属性和方法,又通过构造函数继承实例属性。代码如下:
function Parent(name) { this.name = name; } Parent.prototype.sayHello = function() { console.log('Hello, ' + this.name); } function Child(name) { Parent.call(this, name); } Child.prototype = new Parent(); Child.prototype.constructor = Child;
4、原型式继承(Prototypal Inheritance):
原型式继承是通过复制一个对象的属性来创建一个新对象,然后对新对象进行修改和扩展,从而实现继承。代码如下:
var parent = { name: 'Parent', sayHello: function() { console.log('Hello, ' + this.name); } }; var child = Object.create(parent); child.name = 'Child';
5、寄生式继承(Parasitic Inheritance):
寄生式继承与原型式继承类似,但是在创建新对象时会增加一些额外的方法或属性,然后返回这个对象。代码如下:
function createChild(parent) { var child = Object.create(parent); child.sayHello = function() { console.log('Hello, ' + this.name); }; return child; } var parent = { name: 'Parent' }; var child = createChild(parent); child.name = 'Child';
6、寄生组合式继承(Parasitic Combination Inheritance):寄生组合式继承是组合继承的优化,避免了调用两次父类构造函数的问题。
代码如下:
function Parent(name) { this.name = name; } Parent.prototype.sayHello = function() { console.log('Hello, ' + this.name); } function Child(name) { Parent.call(this, name); } Child.prototype = Object.create(Parent.prototype); Child.prototype.constructor = Child;
ヾ(~▽~)Bye~Bye~