执行从 Javascript 中的构造函数数组访问的构造函数的父级的“静态”方法

德克西斯

呼,连问题都很难写。问题是:我有一个“游戏”,更像是一个随机模拟器,它需要从一系列动作中选择一个随机动作,如下所示:

actions = [ Action1, Action2, Action3 ]

我将操作编写为从 Action 父类继承的类:

function Action() {
    this.targets = [];
    this.used = [];
    this.execute = function(player) {
        doStuff();
        return whatever;
    };
}
//btw the below I've seen in a JS OOP tutorial but it doesn't work and I have to implement init() in every child action
Action.init = function(player) {
    var a = new this.constructor();
    return a.execute(player);
};
Action.checkRequirements = function() {
    return true;
};

Action1.prototype = new Action();
Action1.prototype.constructor = Action1;
function Action1 {
    this.execute = function(player) {
        doStuff();
        return whatever;
    }
}
Action1.init = function(player) {
    var a = new Action1();
    return a.execute(player);
}

所以我正在做的是执行一个动作并得到它的结果是var foo = actions.getRandomVal().init();(getRandomVal 是一个简单的自定义脚本,它从数组中返回一个随机值)它运行良好,创建了正确继承所有属性和方法的对象实例,执行 exec () 方法并返回其结果...但现在我有一个checkRequirements()方法,我想在我希望执行的 100 多个操作中的 10% 中实现方法,并且我希望它简单地从 Action 类继承,以便当它没有在子类中实现,它只是返回 true,我不知道如何实现。如果我这样做var a = actions.getRandomVal();,然后a.checkRequirements();它会抛出一个异常 a.checkRequirements 不是一个函数。

PS:这是一个(大型)朋友群的一个相对较小的非营利项目,我不需要它在每个浏览器中都可以运行,它需要在 Chrome 中运行,我可以告诉他们使用 Chrome 来实现它。

贝尔吉

由于您只需要使用 Chrome,我建议使用 ES6class语法,它可以正确地完成所有继承,而不会搞砸。这包括您的Action1构造Action函数,如您所期望的那样构造函数继承属性(“静态类成员”)

class Action {
    constructor() {
        this.targets = [];
        this.used = [];
    }
    execute(player) {
        doStuff();
        return whatever;
    }
    static init(player) {
        var a = new this(); // no .constructor
        return a.execute(player);
    }
    static checkRequirements() {
        return true;
    }
}

class Action1 {
    execute(player) {
        doOtherStuff();
        return whateverelse;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript构造函数未执行?

来自分类Dev

如何执行JavaScript构造函数?

来自分类Dev

Javascript函数数组自动执行

来自分类Dev

在 JavaScript 中执行 then() 函数

来自分类Dev

生成一个类数组以使用TypeScript中的重载构造函数执行静态方法

来自分类Dev

从中执行Javascript函数

来自分类Dev

JavaScript函数未执行?

来自分类Dev

JavaScript:函数执行的顺序

来自分类Dev

javascript函数执行

来自分类Dev

javascript / jquery中函数的执行

来自分类Dev

在javascript中访问构造函数中的变量

来自分类Dev

在构造函数原型上定义的方法如何访问Javascript构造函数中的实例成员?

来自分类Dev

在Java中再次向下转换执行父构造函数?

来自分类Dev

在 dart 中调用父构造函数之前执行代码

来自分类Dev

构造函数中的JavaScript访问器属性

来自分类Dev

JavaScript中的函数构造函数

来自分类Dev

Javascript函数执行..而不被调用?

来自分类Dev

设置时间执行Javascript函数?

来自分类Dev

JavaScript函数未执行if语句

来自分类Dev

执行javascript函数的右括号

来自分类Dev

JavaScript函数无法完全执行

来自分类Dev

如何执行嵌套的Javascript函数

来自分类Dev

在PDF中执行Javascript

来自分类Dev

如果Javascript中的构造函数未存储在变量中,该如何“持久化”(在执行后可调用)?

来自分类Dev

构造函数是“调用”与构造函数是“执行”的吗?

来自分类Dev

构造函数被“调用”与构造函数被“执行”了吗?

来自分类Dev

如何在 JavaScript 类构造函数中动态加载 Jquery 并在 jquery 完全加载后继续执行

来自分类Dev

如何在函数构造函数javascript中访问属性

来自分类Dev

如何在Javascript函数中执行Promises?

Related 相关文章

热门标签

归档