我目前正在构建一个(ES6)javascript构造函数,并且想知道我应该如何处理"失败"。我正在考虑明确记录到控制台并设置this = undefined;
,但由于某种原因,这是一个非法的左手侧任务"。这大致是我的想法:
class Foo {
constructor(foo) {
if (foo === bar) {
// considered "success"
this.foo = foo;
} else {
// failure
console.log("oh noes!");
this = undefined;
}
}
}
这会被视为明智的做法吗?我只是想了解最佳练习应该是什么,因为在使用构造函数时失败了。
答案 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);