Object在JS中返回其构造函数而不是false。为什么?

时间:2012-11-26 20:36:21

标签: javascript arrays oop object

请帮我修复脚本的工作。

function KittyFactory(kitty) // kitty constructor
{
    for (x in kitties)
    {
        if (kitties[x].color == kitty.color)
        {return false;} // if already in the array return false
    }
    return kitty; // else return the object itself
}

function iPreferDifferentKitties(kitty)
{
    if (new KittyFactory(kitty))
    {
        kitties[x].push(kitty);
    }
}

但如果(kitties[x].color == kitty.color)truenew KittyFactory(kitty)将是一个空构造函数(函数本身),而不是我想要的巨大FALSE

我的问题基本上是我可以把我的小猫阵列两个小猫用相同的颜色。 :(让我伤心。

请问我该如何使用它?

1 个答案:

答案 0 :(得分:2)

您无法从构造函数返回false。使用new运算符调用函数时,返回值必须是对象。如果您尝试返回其他内容,则其行为就像没有return语句一样(默认情况下会返回新构造的对象)。