使用函数构造函数进行原型继承

时间:2017-07-23 08:59:23

标签: javascript inheritance prototypal-inheritance

如果我们假设javascript使用两种方法构建正确的继承,使用函数构造函数和关键字'new',以及使用Object.create的纯原型继承:

如何通过使用独有的函数构造函数方法来创建原型链:

function Original() {
    this.name = 'John';
}
var copyOne = new Original();
copyOne.lastname = 'Doe';

var copyTwo = ?

现在,我如何构建'copyTwo'对象,继承'copyOne'和'Original'两个项目。但是copyOne对象中的项应该在copyTwo的原型内部,因此它在内存使用上更轻(因为继承的对象都只指向一个原型实例,并且没有项的副本)。我转到Chrome调试器并输入console.log(copyTwo)以查看这些项目在copyTwo对象中的位置。

我知道这个原型链可以使用Object.create方式构建,但我不知道如何用函数构造函数和'new'来模仿它。

让我们假设我不想使用纯粹的原型实例来使用Object.create来构建copyTwo。

有办法吗?感谢。

1 个答案:

答案 0 :(得分:2)

function Copy(){}
Copy.prototype = new Original;
Copy.prototype.lastname="doe";

var copyTwo = new Copy;

但是,没有两种继承,js具有原型继承,就是这样。

如果你想要轻量级内存使用,不要在构造函数中设置静态道具,而是原型:

function Original() {   }

Original.prototype = { name:'John'};