JavaScript-原型继承
JavaScript - prototype inheritance
我对OOJS有点陌生,所以请耐心等待。我正在尝试获得如下设置:
Item
name = "no name"
description = "no description"
someVar = "no var"
Section
name = "Section A"
//Rest are inherited
deleted = false
到目前为止,我有:
function Item() {}
function Section() {}
$.extend(Item.prototype, {
name: "no name",
description: "no description"
}
Section.prototype = Item.prototype;
$.extend(this.Section.prototype, {
description: "A section",
swung: true,
swing: function() {
this.swung = false;
return this;
}
});
$.extend(this.Item.prototype, {
"date": "x"
});
$.extend(this.Section.prototype, {
"someVar": "someValue"
});
如果我创建一个新的部分,我会得到:
Section {
name: "no name",
description: "A section",
swung: true,
swing: function,
date: "x",
someVar: "someValue"
}
如果我创建一个新项目,我会得到:
Item {
name: "no name",
description: "A section",
swung: true,
swing: function,
date: "x",
someVar: "someValue"
}
显然,它们都是相同的,原因是原型是相同的实例。我试图实现的是,所有从Item继承的函数在添加时都会拾取属性,并且对Item原型上属性值的任何更改都不会影响Section上的属性(如果它事先被覆盖的话)。对Section原型的任何更改都不应影响Item原型(如上所述),因为Section将具有特定的属性。有人知道有什么方法可以做到这一点吗?
如果我不清楚,请这样说,而不是否决我:)。提前谢谢。
在JS中继承时,不会将一个原型分配给另一个原型。相反,您将父对象的实例分配给子对象的原型:
Section.prototype = new Item();
您可以签出代码的简化版本(不需要jQuery,这会使一切变得不必要地复杂):http://jsfiddle.net/p3h5C/
相关文章:
- JavaScript对象不是从原型链继承的
- 如何使用原型继承编写一个整洁灵活的复杂javascript应用程序
- $emit,$broadcast,原型继承
- Javascript:继承原型而不重新定义构造函数
- 原型继承未按预期工作
- JavaScript中的原型继承.我可以称之为“超级”等价物吗?
- 为什么函数对象的实例没有继承函数原型属性
- 不创建父对象的原型继承
- Javascript基本继承与Crockford原型继承
- JavaScript-构造函数参数和原型继承
- 使用Object.create作为原型的原型继承将[Object]作为实例的原型
- javascript继承中正确的原型做作是什么
- 如何进行JavaScript原型继承(原型链)
- Javascript原型继承原型函数调用
- 对象不继承原型函数
- 从其他类继承原型方法,而不重写自己的原型方法
- JavaScript继承原型
- 继承原型
- Javascript继承/原型混淆
- 使用.call(this)继承原型