ES6 JavaScript 类

麦克风

有没有办法创建一个类,并在该类中的构造函数方法从其他类传入两个不同的对象,以及一些其他信息。例如,假设我有三个类,Statistics 类、Attributes 类和 Character 类。它们看起来有点像这样:

class Statistics {
    constructor(stren, dex, wis, cha, armorClass, hitPoints) {
        this._stren = stren;
        this._dex = dex;
        this._wis = wis;
        this._cha = cha;
        this._armorClass = armorClass;
        this._hitPoints = hitPoints;
    }
}

class Attributes {
    constructor(name, race, sex, level, height, weight, speed) {
        this._name = name;
        this._race = race;
        this._sex = sex;
        this._level = level;
        this._height = height;
        this._weight = weight;
        this._speed = speed;
    }
}

由于 Character 类的构造函数将有 13 个以上的参数,我认为将它们分成其他类比编写具有 13 个以上参数的构造函数更好。那么有没有办法做类似的事情:

class Character {
    constructor(Statistics statistic, Attributes attributes) {
        .....
    }
}

编辑:不,这不是那个问题的重复,人们在说问题是重复的之前是否真的阅读了所问的问题?

安德鲁

请记住,类只是语法糖,因此您可以添加到Character原型中Object.defineProperty并创建自己的 getter。

编辑:用循环干燥它。

class Statistics {
    constructor(stren, dex, wis, cha, armorClass, hitPoints) {
        this._stren = stren;
        this._dex = dex;
        this._wis = wis;
        this._cha = cha;
        this._armorClass = armorClass;
        this._hitPoints = hitPoints;
    }
}

class Attributes {
    constructor(name, race, sex, level, height, weight, speed) {
        this._name = name;
        this._race = race;
        this._sex = sex;
        this._level = level;
        this._height = height;
        this._weight = weight;
        this._speed = speed;
    }
}

class Character {
    constructor(statistics, attributes) {
        this.buildGetters(attributes)
        this.buildGetters(statistics)
      }
      
      buildGetters(obj) {
        for (let attr in obj){
          Object.defineProperty(Character.prototype, attr.replace("_", ""), {
            get: function() {
              return obj[attr]
            }
          })
        }
      }
}


const stats = new Statistics()
const attr = new Attributes("Mike")
const mike = new Character(stats, attr)
console.log(mike.name);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript es6 类处理错误

来自分类Dev

Javascript 对象到 ES6 类

来自分类Dev

Javascript 在类构造函数中调用类 (ES6)

来自分类Dev

JavaScript ES6:es6类中的分组方法?

来自分类Dev

JavaScript ES6导入/导出和类扩展

来自分类Dev

ES6类中的javascript'this'返回未定义

来自分类Dev

Javascript ES6 Promise在类函数中

来自分类Dev

是否应将Javascript ES6类用作React状态?

来自分类Dev

Javascript重构-实现ES6类的优雅方法

来自分类Dev

Javascript ES6 Promise在类函数中

来自分类Dev

ES6类中的javascript'this'返回未定义

来自分类Dev

Javascript ES6 中的类是对象吗?

来自分类Dev

带有 ES6 类的 JavaScript 模式

来自分类Dev

Javascript - 使用类 (ES6) 更改大量 if 语句

来自分类Dev

将 javascript Winston 工厂类转换为 ES6

来自分类Dev

嵌套的ES6类?

来自分类Dev

ES6类的范围

来自分类Dev

Javascript ES6消除了类中各处的'this'关键字的使用

来自分类Dev

ES6类扩展的本机类型使instanceof在某些JavaScript引擎中表现异常?

来自分类Dev

如何在Javascript ES6中向类添加方法

来自分类Dev

ES6类仅仅是Javascript原型模式的语法糖吗?

来自分类Dev

es6 Javascript类在回调中使用此方法

来自分类Dev

JavaScript ES6动态加载类并检查是否已加载?

来自分类Dev

JavaScript / ES6:如何从一个类返回多个迭代器?

来自分类Dev

从父级创建子级(JavaScript中的ES6类)

来自分类Dev

如何在JavaScript ES6类中链接异步方法

来自分类Dev

Javascript ES6类中的“ this.name”,可以仅仅是“ name”吗?

来自分类Dev

在es6 javascript类的非静态成员函数中调用静态getter

来自分类Dev

如何在javascript es6类构造函数中声明一个对象

Related 相关文章

热门标签

归档