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

2023-12-28

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

这是我之前的做法:

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" Cannot read property 'name' of undefined即使我认为我将默认设置为“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)
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类构造函数中选项对象的默认值 的相关文章

随机推荐

  • 事件机器和循环

    这是我的代码 EventMachine run conn EM Protocols HttpClient2 connect request host 80 req conn get request query req callback re
  • R:日期/时间“YYYY-MM-DDThh:mm:ss.sTZD”导入

    如何在 R 中导入以下日期 时间格式示例 我愿意以这种格式保存所有信息 2016 09 12T09 47 00 000 0200 where YYYY four digit year MM two digit month 01 Januar
  • Web API 中 OData POST 的媒体资源支持

    我想创建 oData 控制器来上传文件 FileDto FileId 带扩展名的名称 类型 字符串 元数据 类型 列表 内容 类型 流 Http 请求操作 获取 文件 id Content Type application json Res
  • 如何在 build.json 中指定 Cordova 构建目标

    我执行时出错cordova build xcodebuild 错误 无法找到与提供的目标说明符匹配的目标 platform iOS Simulator OS latest name iPhone 11 Pro Max 由于我的应用程序仅在
  • @ResponseBody 返回空对象

    当我使用下面的方法来获取用户对象时 它工作得很好 GetMapping findOne ResponseBody public Optional
  • 我怎样才能添加温度。 Meteor 发布的字段

    有没有办法在发布函数内的服务器上添加临时额外字段 我似乎无法观察或转变工作 我对同一个集合 列表 有两个订阅 有时我想订阅某些列表 以便它们可用于聊天室列表 但问题是它们出现在我的 列表 模板中 独特的部分是在服务器上的性能 大型阵列 理想
  • 为什么 PhpStorm 检查说“Exception”未定义?

    PhpStorm不认识Exception由于某种原因 代码执行得很好 但我无法 转到 代码 这应该将我发送到Core c php Windows 操作系统有 尝试重新启动操作系统 的建议 这在许多 不起作用 突然停止工作 的情况下很有帮助
  • 在 postgresql 中创建扩展测试

    我想创建一个postgres 中的扩展测试 使用PostGis 所以我想执行以下步骤 1 编辑文件btree interval c from btree gist https github com postgres postgres tre
  • Jersey 2.0“入门”指南,找不到 mainClass

    嗨 我正在尝试遵循入门指南 https jersey github io documentation latest getting started html对于泽西岛 2 0 我按原样执行了步骤 1 1 和 1 2 那里没问题 对于步骤 1
  • ConstraintLayout、RadioGroup 和两列RadioButton

    我有一个 ConstraintLayout 作为根布局 它很好 不过 我现在有一个 RadioGroup 我必须在其中创建两列 RadioButtons 由于 ConstraintLayout 是为了摆脱嵌套布局 我认为将这些 RadioB
  • 如何使用 Javascript 从 url 下载文件?

    如何使用 Javascript 从 url 下载文件 我试图从文本字段中获取用户输入的网址 如下所示 new Ext form TextField disabled false fieldLabel file value id url 我需
  • 更好的 ruby​​ 终端着色库

    有很多着色库 colored term ansicolor 但有没有什么可以做到这一点 puts hello red world bold And world 应该是大胆的 为了说清楚 我想得到这个 e 1m e 31mhello e 0m
  • 应用风格的实际用途是什么?

    我是一名 Scala 程序员 现在正在学习 Haskell 很容易找到 OO 概念的实际用例和现实世界示例 例如装饰器 策略模式等 书籍和互联网上充斥着这些内容 我开始意识到 对于函数概念来说 情况并非如此 例证 应用词 我正在努力寻找应用
  • 如何计算CNN的权重个数?

    考虑到用于将图像分为两类的卷积神经网络 我们如何计算权重数量 输入 100x100 灰度图像 LAYER 1 具有 60 个 7x7 卷积滤波器的卷积层 stride 1 有效 填充 LAYER 2 具有 100 个 5x5 卷积滤波器的卷
  • inner() 为参数“ax”获取了多个值

    在带有 Python 的 Jupyter 笔记本中 我正在从数据帧的两列绘制六边形联合图 该图绘制正确 但我无法调整图片大小 这是代码 fig ax plt subplots fig set size inches 11 7 8 27 sn
  • 如何使用反射调用java中的方法

    如何使用反射调用带参数的方法 我想指定这些参数的值 下面是使用涉及原语的反射来调用方法的简单示例 import java lang reflect public class ReflectionExample public int test
  • Android Smack 聊天客户端

    嗨 朋友们 我正在使用从以下网址下载的 Smack3 2 1 jar http www igniterealtime org downloads index jsp http www igniterealtime org downloads
  • 如何在 terraform 中使用嵌套循环

    我正在尝试使用 Terraform count 在 Azure 中创建 3 个虚拟机 每个虚拟机需要多个磁盘 有什么办法可以做到这一点吗 我尝试创建磁盘名称和大小的映射 但收到错误 无法同时使用 count 和 for each resou
  • Pickle Spark RDD 并将其读入 Python

    我正在尝试通过 pickle 来序列化 Spark RDD 并将 pickled 文件直接读入 Python a sc parallelize 1 2 3 4 5 a saveAsPickleFile test pkl 然后 我将 test
  • 类构造函数中选项对象的默认值

    我创建了一个类 我想为值设置一些默认选项 以防用户不提供任何参数 我最近使用了一个将多个参数传递给一个对象的构造函数 因为我相信当用户创建该类的新实例时 它有助于提高可读性 这是我之前的做法 module exports class Use