原型继承和原型属性

Prototypal Inheritance and prototype attribute

本文关键字:原型 属性 继承      更新时间:2023-10-30

一个对象如何在javascript中从多个父对象继承?

我想有人会这么做:

Fruit.prototype = new Plant ();
Fruit.prototype = new anotherPlant ();

但是水果的原型属性(原型对象)会设置为什么?它还会是Fruit的原始Parent构造函数的原始Parent.prototype吗?

你不能。事实上,没有多少语言支持多重继承。

您所要做的就是将Fruitprototype设置为Plant的实例,然后anotherPlant的实例覆盖。这和简单的一样;

Fruit.prototype = new anotherPlant ();

但是,不要忘记JavaScript有一个继承链。使用上面的内容,如果anotherPlant的原型是Plant,那么您将从这两个对象继承。

function Plant() {
}
Plant.prototype.foo = 'foo';
Plant.prototype.baz = 'baz-a';
function AnotherPlant() {
}
AnotherPlant.prototype = new Plant();
AnotherPlant.prototype.bar = 'bar';
AnotherPlant.prototype.baz = 'baz-b';
var a = new AnotherPlant();
console.log(a.foo); // foo
console.log(a.bar); // bar
console.log(a.baz); // baz-b

JavaScript的继承方式与大多数其他语言不同;它使用原型继承,这意味着该语言通过遵循用于创建实例的构造函数的prototype属性来确定函数(,如果这样做更容易的话)的继承链。