将javascript构造函数包装到另一个函数中

时间:2016-06-15 09:00:19

标签: javascript function object

我有一个创建对象的功能,如下所示:

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();

这是一种可行的方法吗?我知道在构造函数本身中有更好的方法进行此类检查,但这是一个可靠的解决方案吗?

1 个答案:

答案 0 :(得分:2)

调用带有new的函数构造一个新对象,并使用给定的函数初始化该对象。对此有点特别的是,如果您return来自该函数的非原始值(如对象),则该值将用作新对象。听起来很复杂,但它归结为reliable_person()new reliable_person()导致完全相同的事情,因为你从它返回一个对象。因此,使用new使用该功能毫无意义。

从中删除多余的new,剩下的就是一个返回对象的常规函数​​(“工厂函数”)。是的,这有效并且“可靠”。