javascript - 如何合并在构造函数中作为属性传递的选项对象
问题描述
我想创建一个将options
对象作为其构造函数中的参数的类。选项对象的每个成员都应该成为类实例的成员。
const __defaults = {
isDisabled = false,
caption: undefined
}
class Button {
constructor(options) {
this.caption = options.caption || __defaults.caption;
this.isDisabled = options.isDisabled || __defaults.disabled;
}
}
有没有更好的方法来处理这个像传播运算符?
this.config = { ...options, ...__defaultOptions };
唯一的问题是我不能直接分配给this
使用扩展运算符。那将是一个无效的分配。
this = { ...options, ...__defaultOptions };
我想直接在类中创建所有属性,而不是在实例的配置属性中。这样,当我以以下方式初始化按钮时...
const registerButton = new Button({ isDisabled: true });
我可以像这样读取属性:
console.log(registerButton.isDisabled);
而不是这样...
console.log(registerButton.config.isDisabled);
前一种方法更加冗长和可读。
解决方案
class Foo{
constructor(options)
{
Object.assign(this,options);
}
}
let foo = new Foo({a:1,b:2,c:3});
console.log(foo);
推荐阅读
- c - C 段错误 - 哪里/什么?
- html - 如何使用 css 获取轮廓刻度?
- javascript - 如何重建数组以使最近的时间在最上面,经过的时间转移到最后一部分
- python - 将交叉表转换为列而不在 python 中使用 pandas
- webpack-encore - 如何将 WebPack Encore 与 FOSJsRouting 一起使用?
- design-patterns - Why use Adapter design pattern
- python - 如何以任何其他方式编写下面的代码?
- python - 尝试/例外,不返回例外
- javascript - 为什么在浏览器中缓存的脚本比 iframe 源更多
- ios - completionHandler / userCompletionHandler 问题 - Swift iOS