我刚开始进入JS并且我正在使用模块模式很多,我真的不知道我是否正在从我编写的模块继承中做到这一点。
以下是我正在处理的以下.js文件:
define(["src/Inhabitant"], function(Inhabitant)
{
console.log("Coin.js loaded");
return (function()
{
function Coin(stage , position)
{
Inhabitant.call(this, stage, position, "coinGold.png");
}
Coin.prototype =
{
prototype : Object.create(Inhabitant.prototype)
, constructor : Coin
, update : update
}
function update(elapsed)
{
}
return Coin;
})();
});
我有一个名为Coin
的JS类,其父级为Inhabitant
:
define([], function()
{
console.log("Inhabitant loaded.");
return (function()
{
var mStage = null;
var mSprite = null;
var mID = -1;
function Inhabitant(stage, position , resource)
{
mStage = stage;
mSprite = new PIXI.Sprite.fromFrame(resource);
mSprite.position = position;
}
Inhabitant.prototype =
{
constructor : Inhabitant
, get position(){ return mSprite.position; } , set position(position){ mSprite.position = position; }
, get x(){ return mSprite.x; } , set x(x){ mSprite.x = x; }
, get y(){ return mSprite.y; } , set y(y){ mSprite.y = y; }
, get id(){ return mID; } , set id(id){ return mID; }
, get sprite(){ return mSprite; }
, update : update
}
function update(elapsed)
{
console.log("Calling update from Inhabitant");
}
return Inhabitant;
})();
});
我被困在这一个因为我甚至无法调用我应该继承的方法。甚至父级也不提供更新功能。如果我从Coin
删除更新,它将不会调用父版本(我不知道我是否对此版本有正确的假设)。
我大部分时间都是这样编写课程
define([] , function()
{
return function()
{
var o = {};
return o
}
});
这大部分时间都可以工作,因为我创建的对象不需要那么多的继承。但现在我需要以原型方式使用它,以便减少代码重复。
使用我目前拥有的原型继承进行模块模式的正确方法是什么?
这已被多次通过此link和link询问,但这对我的情况没有帮助。
有什么想法吗?