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 回答