2 bogexueqianduan bogexueqianduan 于 2016.04.10 23:52 提问

JavaScript中Math对象为什么可以调用apply()方法?

按照我的理解apply方法是Function对象的原型属性上的方法。
所以不是应该只有Function构造函数构造出来的对象才可以调用Function的apply方法吗?
为什么JS的内置对象Math可以像Math.min.apply(null,array)这个样子的调用apply方法?

4个回答

hsd2012
hsd2012   2016.04.11 08:53
已采纳

因为在JS中,如果没有显示指定protype,那么对象默认的protype是Object对象的实例,一般常用的方法都定义在Object的原型protype上。你在脚本中输出Math就可以看到,console.log(Math);
图片说明

bogexueqianduan
bogexueqianduan 回复我爱莫小兜: 我知道是怎么回事了,这个不是math调用了apply,而是math对象中的min这个函数调用了apply方法,虽然math原型链上没有apply但是min作为函数min的原型链上有apply,OK明白了 谢谢
一年多之前 回复
hsd2012
hsd2012 回复伯格学前端: 因为当Math对象调用Function的方法时候,如果math对象没有定义,就去其原型上面找,原型式Object,Object中也没有,就去Object原型中查找,结果找到了,这是JS继承相关方面的
一年多之前 回复
bogexueqianduan
bogexueqianduan 参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
一年多之前 回复
bogexueqianduan
bogexueqianduan 谢谢解答,其实我的疑问也是因为这个,既然Math对象的原型链上没有Function.prototype 为什么Math可以调用Function的方法
一年多之前 回复
showbo
showbo   Ds   Rxr 2016.04.11 09:57

Math.min就是函数。。为什么不可以apply。。

showbo
showbo 是方法或者函数都可以apply和call
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.11 00:02

JavaScript Math对象方法
javascript操作Math对象的方法总结
JavaScript中Math对象方法浅析
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

caozhy
caozhy   Ds   Rxr 2016.04.11 04:53

知乎上有很详细的回答,不重复了:http://www.zhihu.com/question/20289071

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!