0

スクリプトの動作を修正するのを手伝ってください。

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

私の問題は、基本的に、同じ色の 2 つの子猫を私の子猫配列に配置できることです。:( 私を悲しくさせる。

どのように使用すればよいですか?

4

1 に答える 1

2

falseコンストラクターから戻ることはできません。演算子を使用して関数を呼び出す場合new、戻り値はオブジェクトである必要があります。他の何かを返そうとするreturnと、ステートメントがなかったかのように動作します (そして、新しく構築されたオブジェクトがデフォルトで返されます)。

于 2012-11-26T20:43:13.263 に答える