我正在尝试将一种构造函数模式实现到项目的库中。但是,我想在返回对象之前检查是否传递了某些条件。如果不满足这些条件,那么我想停止构造函数并返回 false
。
但是,我注意到无论我设置什么作为返回值,总是返回一个对象!
即使我这样做:
new function () { return false; }
结果仍然是一个Object
对象:
在 Chrome 中:
在 Firefox 中:
有什么方法可以让 Javascript 中的构造函数失败吗?
最佳答案
If those conditions aren't met, then I want to stop the constructor and return false.
你不能。构造函数的返回值将被忽略,除非它是一个非 null
对象。任何原始值(或 null
)都会被 new
表达式忽略。
如果您真的想要返回一个标志值,您可以这样做,但它必须是一个对象。 (但这是一个坏主意,更多内容见下文。)例如:
// The constructor
function Foo(num) {
if (num < 27) {
return Foo.BAD_ARG; // This is a bad idea, see the right way below
}
this.num = num;
}
Foo.BAD_ARG = {}; // Our special "bad argument" object
Is there any way to have a constructor fail in Javascript?
是:抛出异常:
function Foo(num) {
if (num < 27) {
throw "`num` must be >= 27";
}
this.num = num;
}
关于javascript - 停止构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180785/