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

时间:2016-03-01 23:40:03

标签: javascript class enums

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

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类的枚举。类中还有其他未显示的属性。此外,更新了类代码。

3 个答案:

答案 0 :(得分:1)

如果您想要成为可选参数

,可以尝试此操作
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

答案 1 :(得分:0)

您是否只想在函数内定义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};
}

可能性还在继续,但它并不完全清楚你想要实现的目标。

答案 2 :(得分:0)

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

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;