繁体   English   中英

javascript类构造函数中的默认枚举值

[英]Default enum value in javascript class constructor

我有一个简单的类,我试图弄清楚如何在构造函数中设置默认值:

var Foo = function(bar = Foo.someEnum.VAL1) {

    this.bar = bar;
    someEnum = {VAL1 : 1, VAL2: 2};
}

并像这样使用它:

var myFoo = new Foo(Foo.someEnum.VAL1);

但这显然是错误的。 设置默认枚举值的正确方法是什么,还是我需要将默认值设置为null,然后在构造函数中检查null并进行相应设置?

需要说明的是,bar是Foo类的枚举。 该类中还有其他未显示的属性。 此外,更新了类代码。

如果要将bar设为可选参数,可以尝试以下方法:

function Foo(bar) {
    this.bar = bar || Foo.enum.VAL1; //If bar is null, set to enum value.
}

//Define static enum on Foo.
Foo.enum = { VAL1: 1, VAL2: 2, VAL3: 3 };

console.log(new Foo().bar); //1
console.log(new Foo(Foo.enum.VAL3).bar); //3

您是否只想在函数中定义bar

var Foo = function() {
    var bar = {VAL1 : 1, VAL2: 2};
}

或空白的起始对象:

var Foo = function() {
    var bar = {};
}

还是要从传递给函数的参数中进行设置?

var Foo = function(barIn) {
    var bar = barIn;
}

另一个选择-根据传入的值创建对象(枚举):

var Foo = function(val1, val2) {
    var bar = {VAL1 : val1, VAL2: val2};
}

可能性还在继续,但是尚不清楚您要实现的目标。

我不确定您要做什么,但也许就是这个...

var Foo = function (bar = 1) {
    this.bar = bar;
}
Foo.VAL1 = 1;
Foo.VAL2 = 2;

现在您可以执行以下操作:

foo1 = new Foo();
alert(foo1.bar); //alerts 1;

foo2 = new Foo(Foo.VAL2);
alert(foo1.bar); //alerts 2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM