我有一个创建对象的功能,如下所示:
function person() {
this.name = "test person";
}
var me = new person();
现在我打算将此函数包装到另一个函数中,以用于断言目的。
function reliable_person() {
/* do check on params if any*/
return new person();
}
var me = new reliable_person();
这是一种可行的方法吗?我知道在构造函数本身中有更好的方法进行此类检查,但这是一个可靠的解决方案吗?
答案 0 :(得分:2)
调用带有new
的函数构造一个新对象,并使用给定的函数初始化该对象。对此有点特别的是,如果您return
来自该函数的非原始值(如对象),则该值将用作新对象。听起来很复杂,但它归结为reliable_person()
和new reliable_person()
导致完全相同的事情,因为你从它返回一个对象。因此,使用new
使用该功能毫无意义。
从中删除多余的new
,剩下的就是一个返回对象的常规函数(“工厂函数”)。是的,这有效并且“可靠”。