对象在nodejs中对构造函数内部进行破坏,以便为不可工作的成员变量赋值

时间:2017-11-14 10:59:48

标签: node.js ecmascript-6 object-destructuring

我在构造函数中尝试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();

1 个答案:

答案 0 :(得分:2)

您可以使用aliases将表达式属性直接分配给对象道具,并将表达式包装在括号中:



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();