我想要做的是讓子對象爲基礎對象中定義的函數提供自己的實現。據我瞭解,到目前爲止,原型是最好的(唯一的)方式去做這件事。如何從基礎對象繼承函數並在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?
總結我試圖創建一個對象,將覆蓋從基礎對象繼承的功能,改變它的基本對象存在的功能,我該怎麼辦呢?謝謝你的時間。