javascript - Javascript 构造函数失败

标签 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;
    }
  }
}

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

最佳答案

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

关于javascript - Javascript 构造函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728078/

相关文章:

javascript - 了解 Modernizr 相对于 html5shiv 的优势

c++ - 'empty' 构造函数或析构函数会做与生成的相同的事情吗?

laravel api 未显示来自请求验证的消息

javascript - 理论 : Is It Possible/Feasible To Serve Static Content Via Websockets?

javascript - 根据 axios GET 请求的响应填充 Vue 数据

C++显式转换和隐式转换

python - 我应该将我的游戏放在 pygame 类中吗?

java - 在多线程应用程序中捕获 java.lang.ExceptionInInitializerError 是否合适?

PHP - 记录错误

javascript - 实例化 WASM 模块时出错 : "module is not an object or function"