动态扩展一个返回新创建的类的类

时间:2018-05-24 22:24:37

标签: javascript c# oop inheritance

我不确定标题问题是否恰好需要完成,但我会解释。我有两个类Tile和extendTile。我希望extendTile可以在不同的类名下创建一个新的Tile实例。

实施例

extendTile surfaceTile = new extendTile(Tile, {Layer: 1, Type: 0});

extTile grassTile = new surfaceTile("Grass");

extTile fireTile = new surfaceTile("Grass", {Damage: 0});

这里有我的代码,它完全符合我在javascript中的需要。

function extendTile(Type, obj){
var newClass = function Tile(name, obj){
  this.name = name;
  console.log(name);
  if (obj) for (var key in obj){
    if(obj.hasOwnProperty(key)){
      this[key] = obj[key];
    }
  }
}

var proto = new Type;

for (var key in obj)
{
  if (obj.hasOwnProperty(key))
  {
    proto[key] = obj[key];
  }
}

newClass.prototype = proto;
return newClass;}

var newTile = new extendTile(function() {}, {});
var SurfaceTile = new extendTile(newTile, {Layer: 0, Type: 0});
var extSurfaceTile = new extendTile(SurfaceTile, {Damage: 5}); //Will inherit the layer and type from SurfaceTile and extend it with Damage as well
var nameTheTile = new extSurfaceTile("fire");

这是我想要为我正在制作的游戏专门创建的Tilemap编辑器。我希望能够扩展上述对象的原因是它们可以被修改,也可以被修改,也可以修改。扩展一个类并动态创建它,而不是从头创建一个完整的类(Prototypical inheritance)会更容易。

我认为我是以错误的方式思考这个问题,并且应该用另一种方法来思考,但我不确定在这种情况下哪种方法最好。我知道我需要扩展一个基类。

0 个答案:

没有答案