0

Math.sin() を変更して、ユーザーが Math.sin(angle, 'char') を指定すると、sin がラジアンではなく度数で取得されるようにするにはどうすればよいでしょうか。

これまでのところ、

Math.sin= function()
{
    if(arguments.length>1)
    {
        return Math.sin(arguments[0]*(Math.PI/180));
    }
    else
    {
        return Math.sin(arguments[0]);
    }
};

しかし、今は無限再帰があるので、参照が必要だと思います。どうすればこれを終わらせることができますか?

4

2 に答える 2

1

それをしたい場合は、古いバージョンへの参照を保持し、それを呼び出す必要があります。

var oldSin = Math.sin;

Math.sin= function()
{
    if(arguments.length>1)
    {
        return oldSin(arguments[0]*(Math.PI/180));
    }
    else
    {
        return oldSin(arguments[0]);
    }
};

http://jsfiddle.net/WQ9C9/

あなたの現在のコードはあなたの新しいMath.sinものを無限に呼び出します(あなたが発見したように)。

于 2013-08-28T01:21:12.460 に答える
1

なぜだめですか:

Math.mySin = function()
{
    if(arguments.length>1)
    {
        return Math.sin(arguments[0]*(Math.PI/180));
    }
    else
    {
        return Math.sin(arguments[0]);
    }
};
于 2013-08-28T01:29:16.530 に答える