Javascript构造函数失败

Failing in a Javascript Constructor

本文关键字:失败 构造函数 Javascript      更新时间:2023-09-26

我目前正在构建一个(ES6)javascript构造函数,并想知道应该如何处理"失败"。我想直接登录控制台并设置this = undefined;,但出于某种原因,这是"非法的左侧分配"。这大致就是我的想法:

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

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

您不能直接分配给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);