我有一个简单的类,我想弄清楚如何在构造函数中设置默认值:
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类的枚举。类中还有其他未显示的属性。此外,更新了类代码。
答案 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;