javascript - 类构造函数中选项对象的默认值

标签 javascript node.js

我创建了一个类,我想为值设置一些默认选项,以防用户不提供任何参数。我最近从一个带有多个参数的构造函数转到一个对象,因为我相信当用户创建类的新实例时它有助于提高可读性。

这是我之前的做法:

module.exports = class User {
    constructor(name = "Joe", age = 47) {
        this.name = name;
        this.age = age;
    }
}

const User = require("./user");

const user = new User(); // Defaults to "Joe" and 47

实际上,我的类有更多的参数,使用它时的可读性变得很困难。所以为了解决这个问题,我切换到一个效果更好的选项对象,但我似乎无法设置默认值。当我尝试使用 this.name 时,它说 this.name = options.name || “Joe”无法读取未定义的属性“名称”,即使我认为我将默认设置为“Joe”

这是我现在的做法:

module.exports = class User {
    constructor(options) {
        this.name = options.name || "Joe";
        this.age = options.age || 47;
    }
}

const User = require("./user");

const user = new User();

最佳答案

你实际上只需要一个内衬:

const defaultUser = {
  name: "Joe",
  age: 47
};

module.exports = class User {
  constructor(options) {
     Object.assign(this, defaultUser,  options)
  }
}

关于javascript - 类构造函数中选项对象的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775247/

相关文章:

javascript - 使用 React.js 更新 JSON 数组

javascript - MSIE : Append XML Element to HTML Element

javascript - 为什么输入模式属性不适用于数字?

embedded - 用于微芯片 pic32 的 Node.js

javascript - 如何在 node.js 可读流中调用异步函数

javascript - 段落标记中设置的最大限制,内容可编辑为 true

javascript - 在流程 : how to stub a method in mocha? 中编写规范

javascript - Socket.io 无缘无故地恢复到 XHR/JSONP 轮询

javascript - 如何在ajax调用中使用GET请求显示服务器响应的页面

node.js - 如何计算NodeJS项目中npm依赖使用的百分比?