在nodejs中的构造函数内部析构对象以将值分配给成员变量不起作用

问题描述 投票:0回答:1

我正在尝试在构造函数内进行 ES6 对象解构,希望为成员变量赋值。它不起作用。当我在时它显示未定义 打印成员函数内的值。如果我在构造函数内打印,它的打印正确。这有效吗?

    class Environment {
        constructor(env) {
            const { name, version } = env
            console.log(name)
        }

        printName() {
            console.log(this.name)
        }
    }
    var obj = { "name": "inst1", "version": "12.2.7" };
    var envObj = new Environment(obj);
    envObj.printName();
node.js ecmascript-6 object-destructuring
1个回答
7
投票

您可以使用 aliases 并将表达式括在括号中直接将解构属性分配给对象 props:

class Environment {
    constructor(env) {
        ({ name: this.name, version: this.version } = env);
    }

    printName() {
        console.log(this.name)
    }
}
var obj = { "name": "inst1", "version": "12.2.7" };
var envObj = new Environment(obj);
envObj.printName();

如果

env
仅包含您想要的属性(名称、版本),您可以直接 Object#assign
this
:

class Environment {
    constructor(env) {
        Object.assign(this, env);
    }

    printName() {
        console.log(this.name)
    }
}
var obj = { "name": "inst1", "version": "12.2.7" };
var envObj = new Environment(obj);
envObj.printName();

© www.soinside.com 2019 - 2024. All rights reserved.