我目前正在构建一个(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);