为什么Math.prototype未定义?

时间:2012-05-30 16:40:58

标签: javascript math prototype

我必须在这里遗漏一些内容,因为Math.prototypeundefined for me。为什么是这样?我试着做这样的事情:

Math.prototype.randomRange = function(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
}

但不得不做这样的事情:

Math.randomRange = function(from, to){
    return Math.floor(Math.random() * (to - from + 1) + from);
}
但是,这感觉不对。是我还是应该以另一种方式做这件事?如果这是一个愚蠢或重复的问题我很抱歉,但是我找不到任何搜索结果(当我搜索“Math.prototype”时出现了两个问题,这有点奇怪)。

3 个答案:

答案 0 :(得分:6)

Math函数类似于其他OO语言中的类级函数。构造函数上没有原型对象;没人(我知道)无论如何都使用了构造函数。 (你会对Math个实例做什么?)

编辑 - 它已在评论中指出(我从未想过要检查我猜)Math无论如何都不是函数。在浏览器控制台中输入Math(),您将收到错误。

答案 1 :(得分:2)

JavaScript中的

Math相当于其他语言中的静态类。它没有原型或构造函数(相当于,用Java编写一个带有所有静态方法的类,只有一个私有构造函数)。

有关详细信息,请参阅此StackOverflow问题:Is there any practical use of redefining Math.constructor in JavaScript/ActionScript?

具体而言,接受的答案为:https://stackoverflow.com/a/10431309/1403635

答案 2 :(得分:1)

因为Math是静态对象,而不是构造函数。如果拨打new Math()

,则会出错