我必须在这里遗漏一些内容,因为Math.prototype
是undefined 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”时出现了两个问题,这有点奇怪)。
答案 0 :(得分:6)
Math
函数类似于其他OO语言中的类级函数。构造函数上没有原型对象;没人(我知道)无论如何都使用了构造函数。 (你会对Math
个实例做什么?)
编辑 - 它已在评论中指出(我从未想过要检查我猜)Math
无论如何都不是函数。在浏览器控制台中输入Math()
,您将收到错误。
答案 1 :(得分:2)
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()