javascript - 你如何在 ES Next 中扩展静态属性?

标签 javascript ecmascript-next

有时(尽管很少)您需要扩展而不是覆盖父静态属性,例如下面的(非常蹩脚的)示例:

class Person {
    static coreStats = {
        role: "slacker",
        weapon: null,
        speed: 4,
        vechicle: "roller blades",
    };
}

class Ninja extends Person {
    static coreStats = {
        role: "silent assassin",
        weapon: "katana",
        speed: 99,
    };
}

console.log(Ninja.coreStats); // But vechicle is no more

如何在不破坏父属性的情况下扩展子类中的静态属性?

最佳答案

你可以这样做:

class Person {
    static coreStats = {
        role: "slacker",
        weapon: null,
        speed: 4,
        vechicle: "roller blades",
    };
}

class Ninja extends Person {
    static coreStats = Object.assign({}, Person.coreStats, {
        role: "silent assassin",
        weapon: "katana",
        speed: 99
    });
}
console.log(Ninja.coreStats);

这将合并 coreStats 并在重复的情况下用 Ninja.coreStats 覆盖 Person.coreStats

关于javascript - 你如何在 ES Next 中扩展静态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36935048/

相关文章:

javascript - 在 redux 中使用装饰器连接多个 reducer

javascript - 在预定义的 Javascript 代码中导入 MySQL 表

javascript - 外部 javascript 中的 Razor 代码被视为字符串

javascript - 使用 typescript 导出默认数据 SyntaxError : Unexpected token export during bulding on next. js

javascript - 我如何以邮件形式发送表单数据并仍然提交

javascript - 使用扩展语法时如何根据索引更新数组元素?

javascript - ES6 类属性定义

javascript - 我可以使用变量作为标识符来设置私有(private)类字段吗?如何?

javascript - 当数据中的一条记录使用浮点图时,未创建饼图

javascript - 有没有办法在 WebStorm 中启用对可选链接运算符的支持