使用JavaScript多年后,我将编写第一个JS类(!)。我想做的是,如果未提供必需的构造函数参数,则会引发错误。有点喜欢
class Foo {
constructor(options) {
super(options);
if (!(this.reqd = options.reqd)) {
return 'error: 'reqd' is required'
}
this.optional = options.optional;
}
}
const f = new Foo({optional: 'frob'})
会引发错误,但是const f = new Foo({reqd: 'blub'})
或const f = new Foo({reqd: 'blub', optional: 'frob'})
会起作用。
可以做到吗?
答案 0 :(得分:3)
检查options
对象是否具有带有reqd
的{{1}}属性,如果没有,则抛出错误:
hasOwnProperty
如果要引发错误,则必须明确class Foo {
constructor(options) {
// super(options);
if (!options.hasOwnProperty('reqd')) {
throw new Error('reqd property is required');
}
this.reqd = options.reqd;
// if you don't want to assign `undefined` for a non-existent optional property,
// use a hasOwnProperty check before assigning
this.optional = options.optional;
}
}
const f1 = new Foo({ reqd: 'val' });
console.log('next');
const f2 = new Foo({ optional: 'val' });
,否则不会有错误(或者至少要等到以后)。只是返回一个字符串并没有错误。