我想要做的是让一个子对象为基础对象中定义的函数提供自己的实现。据我所知,到目前为止,原型是最好的(唯一的!)方法。
另请注意,我目前正在使用游戏引擎进行开发:Turbulenz,因此我试图尽可能地遵循/坚持他们的风格。在引擎中,“类”/对象以下列方式定义和创建
function baseObject() { }
baseObject.prototype =
{
myMember1: 1,
myMember2: 2,
myMethod: function myMethodFn() {
return this.myMember1 + this.myMember2;
}
}
baseObject.Create = function baseObjectCreateFn
{
var o = new baseObject();
return o;
}
这将允许我执行以下操作
var anObject = baseObject.Create();
var someValue = anObject.myMethod(); // should return 3
我现在想做的是创建一个新对象,它继承了 baseObject 的所有属性,同时允许我覆盖它的 myMethod 函数,例如减去两个成员值而不是相加。
我是否正确地说我必须创建另一个对象然后更改其原型?最让我震惊的部分是baseObject原型的定义被定义为对象文字,所以我不确定覆盖其成员之一的语法,即以下内容是否有效?:
function childObject() {}
childObject.prototype = baseObject.Create() // would this inherit from baseObject?
// or should it be: childObject.prototype = new baseObject();
// this is the part thats confusing me as the syntax
// doesn't quite match the original base objects prototype
// syntax and I'm unsure if that will matter
childObject.prototype.myMethod = function myMethodFn() {
return this.myMember1 - this.myMember2;
}
childObject.Create = function childObjectCreateFn
{
var o = new childObject();
return o;
}
var aChildObject = childObject.Create()
var anotherValue = aChildObject.myMethod() // would this return -1 as expected?
总而言之,我正在尝试创建一个对象,该对象将通过从基础对象继承函数并更改它来覆盖基础对象中存在的函数,我该怎么做?谢谢你的时间。