模块模式中的原型继承JavaScript - 基类不从父级继承任何内容

时间:2015-11-03 09:24:37

标签: javascript inheritance

我刚开始进入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
    }
});

这大部分时间都可以工作,因为我创建的对象不需要那么多的继承。但现在我需要以原型方式使用它,以便减少代码重复。

使用我目前拥有的原型继承进行模块模式的正确方法是什么?

这已被多次通过此linklink询问,但这对我的情况没有帮助。

有什么想法吗?

0 个答案:

没有答案