如何在Javascript中处理错误的构造函数参数?
我有一个如何在Javascript中处理错误的构造函数参数?,javascript,constructor,Javascript,Constructor,我有一个Foo构造函数,如下所示: function Foo(params) { this.x = params.x + 5; ... } Foo的名称如下: var foo = new Foo(someObject); 我想检查Foo的构造函数中params的内容,如果有错误(例如params.x不是数字,或者params.y是未定义的),我想Foo为null(这意味着Foo对象没有创建) 我想,一个选项是在构造函数中抛出一个异常,并使用try..catch包装对new Foo
Foo
构造函数,如下所示:
function Foo(params) {
this.x = params.x + 5;
...
}
Foo
的名称如下:
var foo = new Foo(someObject);
我想检查Foo
的构造函数中params
的内容,如果有错误(例如params.x
不是数字,或者params.y
是未定义的),我想Foo
为null
(这意味着Foo
对象没有创建)
我想,一个选项是在构造函数中抛出一个异常,并使用try..catch
包装对new Foo(someObject)
的调用(或者创建一个类似makeFoo
的函数)
您建议如何处理此问题?我将抛出异常。无效输入是一种异常情况,抛出异常是有意义的。我不会为makeFoo
包装而烦恼;调用代码应该处理它
再
我希望foo
为null
(这意味着没有创建foo
对象)
无法使表达式newfoo(…)
返回null
。通常,new
表达式的结果是对由new
运算符构造并作为this
传递到构造函数中的对象的引用。构造函数可以重写它并返回不同的对象,但它不能通过返回null
来实现。如果构造函数不返回任何内容,或返回非对象的内容(不包括null
;null
不是对象[它有自己的类型,],尽管typeof null
是“object”
),new
表达式的结果将是由new
操作符创建的对象。在章节和中有更多信息。我将抛出异常。无效输入是一种异常情况,抛出异常是有意义的。我不会为makeFoo
包装而烦恼;调用代码应该处理它
再
我希望foo
为null
(这意味着没有创建foo
对象)
无法使表达式newfoo(…)
返回null
。通常,new
表达式的结果是对由new
运算符构造并作为this
传递到构造函数中的对象的引用。构造函数可以重写它并返回不同的对象,但它不能通过返回null
来实现。如果构造函数不返回任何内容,或返回非对象的内容(不包括null
;null
不是对象[它有自己的类型,],尽管typeof null
是“object”
),new
表达式的结果将是由new
操作符创建的对象。更多信息,请参见第节和。的可能副本