原型继承和原型属性
Prototypal Inheritance and prototype attribute
一个对象如何在javascript中从多个父对象继承?
我想有人会这么做:
Fruit.prototype = new Plant ();
Fruit.prototype = new anotherPlant ();
但是水果的原型属性(原型对象)会设置为什么?它还会是Fruit的原始Parent构造函数的原始Parent.prototype吗?
你不能。事实上,没有多少语言支持多重继承。
您所要做的就是将Fruit
的prototype
设置为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
属性来确定函数(类,如果这样做更容易的话)的继承链。
相关文章:
- 附加到原型属性的Do函数没有闭包
- 日期原型属性
- JS构造函数的原型属性与其原型之间的区别
- 为什么函数对象的实例没有继承函数原型属性
- 为什么浏览器显示原型属性不同
- 为什么在Function.prototype上没有原型属性
- 函数的原型属性
- 原型继承和原型属性
- 在JavaScript中,函数的默认值是多少'的原型属性
- Chrome 不支持 Javascript 中的原型属性吗?
- 我应该在JavaScript中将什么连接到子原型属性
- 更新 JavaScript 中的原型属性
- 请解释有关 JavaScript 中的原型属性和函数构造函数的详细信息
- 为什么原型函数无法读取原型属性
- 与对象属性同名的原型属性
- 如何获取原型属性列表
- 构造函数中的方法与函数的原型属性之间的差异
- JavaScript 原型属性
- 函数对象__proto__和原型属性
- 未在自定义 OL3 控件的构造函数中定义的原型属性