web-dev-qa-db-ja.com

ES6クラスコンストラクターでの破棄

これはばかげているように聞こえるかもしれませんが、私には耐えられません。言語レベルで、オブジェクトをコンストラクタのクラスプロパティに分解するサポートがあるかどうか、たとえば、.

class Human {
    // normally
    constructor({ firstname, lastname }) {
        this.firstname = firstname;
        this.lastname = lastname;
        this.fullname = `${this.firstname} ${this.lastname}`;
    }

    // is this possible?
    // it doesn't have to be an assignment for `this`, just something
    // to assign a lot of properties in one statement
    constructor(human) {
        this = { firstname, lastname };
        this.fullname = `${this.firstname} ${this.lastname}`;
    }
}
23
Lim H.

言語のどこにもthisを割り当てることはできません。

1つのオプションは、thisまたは他のオブジェクトにマージすることです。

constructor(human) {
  Object.assign(this, human);
}
39
user663031