ES6类实例化中的错误消息

时间:2019-06-01 21:12:38

标签: javascript class ecmascript-6

使用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'})会起作用。

可以做到吗?

1 个答案:

答案 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' });,否则不会有错误(或者至少要等到以后)。只是返回一个字符串并没有错误。