javascript - 是否需要在类构造函数中声明所有成员
问题描述
以下两个类声明本质上是否相同?
class ColorSpectrum
{
constructor(min, max)
{
this.Min = min;
this.Max = max;
//this.Colors = []; edited
this.Colors;
}
SetColors(colors)
{
this.Colors = colors;
}
}
对比
class ColorSpectrum
{
constructor(min, max)
{
this.Min = min;
this.Max = max;
}
SetColors(colors)
{
this.Colors = colors;
}
}
如果我理解正确,在这两种情况下,Colors
如果undefined
没有SetColors
在ColorSpectrum
.
从更广泛的意义上说,我是否需要在构造函数中明确声明我的类的所有成员,或者它们可以在不同的成员中“动态”定义(例如SetColors
在我上面的示例中)?
解决方案
如果我理解正确,如果在 ColorSpectrum 的实例中没有调用 SetColors,那么在这两种情况下,颜色都将是未定义的。
让我们检查。
class ColorSpectrum {
constructor(min, max) {
this.Min = min;
this.Max = max;
this.Colors = [];
}
SetColors(colors) {
this.Colors = colors;
}
}
class ColorSpectrum2 {
constructor(min, max) {
this.Min = min;
this.Max = max;
}
SetColors(colors) {
this.Colors = colors;
}
}
const spectrum1 = new ColorSpectrum(0, 1);
const spectrum2 = new ColorSpectrum2(0, 1);
console.log(spectrum1.Colors);
console.log(spectrum2.Colors);
没有。
顺便说一句,这是大写类名的常见约定,但小写的属性和方法。所以:class ColorSpectrum
, 但是this.min
, this.max
, setColors
.
推荐阅读
- java - 通过程序删除文件的警告消息
- django - 如何使用 form.cleaned_data django
- php - 我如何最好和安全地将父/子对象连接在一起
- kubernetes - 将 nginx 公开为负载均衡器与入口控制器有什么区别?
- php - Laravel 5.5 无法连接到数据库
- mapbox - 如何从源是mapbox gl js中的矢量瓦片的图层上的queryRenderedFeatures的结果中获取特征geojson?
- javascript - 使用jquery添加没有值的单个属性
- sql - 从列表中获取自定义不同值
- dependency-injection - Play Framework:子模板中的依赖注入
- kubernetes - NoExecute、NoSchedule、PreferNoSchedule 有什么区别?