我想要做的是让子对象为基础对象中定义的函数提供自己的实现。据我了解,到目前为止,原型是最好的(唯一的)方式去做这件事。如何从基础对象继承函数并在javascript中覆盖它
请注意,我目前正在开发使用游戏引擎: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?
总结我试图创建一个对象,将覆盖从基础对象继承的功能,改变它的基本对象存在的功能,我该怎么办呢?谢谢你的时间。