在Javascript构造函数中失败

时间:2016-01-11 17:59:31

标签: javascript class error-handling constructor ecmascript-6

我目前正在构建一个(ES6)javascript构造函数,并且想知道我应该如何处理"失败"。我正在考虑明确记录到控制台并设置this = undefined;,但由于某种原因,这是一个非法的左手侧任务"。这大致是我的想法:

class Foo {
  constructor(foo) {
    if (foo === bar) {
      // considered "success"
      this.foo = foo;
    } else {
      // failure
      console.log("oh noes!");
      this = undefined;
    }
  }
}

这会被视为明智的做法吗?我只是想了解最佳练习应该是什么,因为在使用构造函数时失败了。

1 个答案:

答案 0 :(得分:1)

您无法直接分配到this,但如果您确实想要在发生错误时返回undefined,则可以使用工厂方法:

class Foo {
  constructor(foo) {
    if (foo !== bar) {
      throw new Error('oh noes!');
    }
  }
}

let Factory = {
  createFoo(f) {
    try {
      return new Foo(f);
    } catch(e) {
      console.log(e.message);
    }
  }
};

let myFoo = Factory.createFoo(baz);