【发布时间】:2020-04-15 21:37:40
【问题描述】:
假设我有一堂课
class Something {
constructor(a, b) {
this.a = a;
this.b = b;
}
}
我怎样才能实例化一个对象,以便我只给b赋值而不给a赋值?
例如类似于:
let someObject = new Something(b : 10);
预期输出:
log(someObject.a) // undefined
log(someObject.b) // 10
出于代码可读性的原因,如果可以的话,我想避免使用let someObject = new Something(undefined, 10);。
我对 js 有点陌生,我不确定这是否可能,但任何帮助或指导将不胜感激!
【问题讨论】:
-
通过
undefined似乎正是您想要的。 -
未测试,但这里有一个想法:将对象传递给构造函数(
constructor(values))并将它们分配为:this.a = values.a;等。然后您可以执行let someObject = new Something({b : 10});。我的意思是,使用undefined对我来说似乎是合理的,但如果这种对象方法最适合您,那就太好了。 -
JS中没有命名参数传递。如果你想模拟的话,你可以传递一个对象,带有字段
a和b。 -
将a作为第二个参数,并将其设置为默认值
constructor(b, a = 0) {...}。然后你可以只用一个参数创建你的实例:const a = new Something(5); -
@chriskirknielsen 这似乎是最接近我需要的解决方案。如果我必须首先考虑这一点,也许我应该考虑限制构造函数中的参数数量。
标签: javascript class ecmascript-6