如果没有传递参数,则在构造函数中创建默认值 - javascript
Create default in constructor function if no argument is passed - javascript
我有以下内容:
class example {
constructor (arg) {
this.value = arg.value
}
print () {
console.log(this.value);
}
}
var new_example = new example ({
value: 12,
})
new_example.print();
我如何设置一个默认值,比如值 = 10,这样,如果没有给出参数,它会打印 10。即:
var newer_example = new example ({
})
我试过类似的东西:
class example {
constructor (arg) {
this.value = (arg.value || 10)
}
print () {
console.log(this.value);
}
}
并且:
class example {
constructor (arg) {
this.value = ("undefined" != arg.value || 10)
}
print () {
console.log(this.value);
}
}
但是找不到任何有用的东西。
您可以使用内置 arguments
并像这样检查:
class example {
constructor(arg) {
this.value = arguments.length > 0 ? arg.value : 10;
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
new example({ value: false }).print();
new example({ value: '' }).print();
您也可以(接近您所拥有的)验证 arg
是否已定义:
class example {
constructor(arg) {
if (arg && typeof arg.value !== "undefined") {
this.value = arg.value;
} else {
this.value = 10;
}
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
或者如果不需要所有虚假值,您可以使用 shorthand:
执行上述操作
class example {
constructor(arg) {
this.value = (arg && typeof arg.value === 'number') ? arg.value : 10;
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
new example({ value: 0 }).print();
new example({ value: false }).print(); //value false is lost
class example {
constructor (arg) {
this.value = (arg.value || 10)
}
print () {
console.log(this.value);
}
}
这段代码对我有用。我认为你的问题在第六行
console.log(value)
这个应该是console.log(this.value)
(你忘记了this.
)。常见错误!
您可以使用对象解构来获得更简洁的代码:
class example {
constructor (arg = {['value']:3}) {
this.value = arg.value
}
print () {
console.log(this.value);
}
}
print
在未向构造函数传递任何内容的情况下调用创建的对象,将具有控制台输出 3
:
var newer_example = new example()
newer_example.print(); /// Console prints `3`
您可以对参数使用默认值,并且可以对对象属性使用具有更多默认值的解构以支持 new example()
和 new example({})
:
class example {
constructor ({ value = 10 } = {}) {
this.value = value
// Note: You could also use Object.assign(this, { value }) which
// can become useful once you have more values in your object
}
print () {
console.log(this.value);
}
}
我有以下内容:
class example {
constructor (arg) {
this.value = arg.value
}
print () {
console.log(this.value);
}
}
var new_example = new example ({
value: 12,
})
new_example.print();
我如何设置一个默认值,比如值 = 10,这样,如果没有给出参数,它会打印 10。即:
var newer_example = new example ({
})
我试过类似的东西:
class example {
constructor (arg) {
this.value = (arg.value || 10)
}
print () {
console.log(this.value);
}
}
并且:
class example {
constructor (arg) {
this.value = ("undefined" != arg.value || 10)
}
print () {
console.log(this.value);
}
}
但是找不到任何有用的东西。
您可以使用内置 arguments
并像这样检查:
class example {
constructor(arg) {
this.value = arguments.length > 0 ? arg.value : 10;
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
new example({ value: false }).print();
new example({ value: '' }).print();
您也可以(接近您所拥有的)验证 arg
是否已定义:
class example {
constructor(arg) {
if (arg && typeof arg.value !== "undefined") {
this.value = arg.value;
} else {
this.value = 10;
}
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
或者如果不需要所有虚假值,您可以使用 shorthand:
执行上述操作class example {
constructor(arg) {
this.value = (arg && typeof arg.value === 'number') ? arg.value : 10;
}
print() {
console.log(this.value);
}
}
new example().print();
new example({ value: 12 }).print();
new example({ value: 0 }).print();
new example({ value: false }).print(); //value false is lost
class example {
constructor (arg) {
this.value = (arg.value || 10)
}
print () {
console.log(this.value);
}
}
这段代码对我有用。我认为你的问题在第六行
console.log(value)
这个应该是console.log(this.value)
(你忘记了this.
)。常见错误!
您可以使用对象解构来获得更简洁的代码:
class example {
constructor (arg = {['value']:3}) {
this.value = arg.value
}
print () {
console.log(this.value);
}
}
print
在未向构造函数传递任何内容的情况下调用创建的对象,将具有控制台输出 3
:
var newer_example = new example()
newer_example.print(); /// Console prints `3`
您可以对参数使用默认值,并且可以对对象属性使用具有更多默认值的解构以支持 new example()
和 new example({})
:
class example {
constructor ({ value = 10 } = {}) {
this.value = value
// Note: You could also use Object.assign(this, { value }) which
// can become useful once you have more values in your object
}
print () {
console.log(this.value);
}
}