我不确定标题问题是否正是需要做的,但我会解释。我有两个类 Tile 和 extendTile。我希望扩展Tile在不同的类名下创建一个新的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 编辑器,我想专门为我正在制作的游戏创建。我希望能够扩展像上面这样的对象的原因是,它们可以被修改以及制作的插件等等。扩展一个类并动态创建它会更容易,而不是从头开始创建整个类(原型继承)。
我想我真的以错误的方式考虑这个问题,应该用另一种方法来考虑,但我不太确定在这种情况下哪种方法最好。我知道我需要扩展一个基类。
喵喔喔
相关分类