node.js - Node js中构造函数内部的对象解构以将值分配给成员变量不起作用

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

最佳答案

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

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

关于node.js - Node js中构造函数内部的对象解构以将值分配给成员变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283995/

相关文章:

javascript - React js重命名和解构数组长度

node.js - 更新定义文件时如何修复损坏的 Typescript 定义

javascript - 使用事件发射器触发的事件是否保持顺序

javascript - 如何将 Parrot AR.Drone 编程为直线飞行

node.js - 平衡支付帐户借记不适用于 Node.js

javascript - 带有 ES2015 babel 预设的 Marionette 不起作用

javascript - 如何通过解构赋值将数据绑定(bind)到这个?

javascript - 如何在 IE11 上加载也适用于常青浏览器的 Polymer 元素?

javascript - Chrome 62/Chrome Canary 64 中的 ES6 模块支持,在本地不起作用,CORS 错误

javascript - 解构对象像参数一样传递给函数