前端复习--Math.min.apply(Math,arr)写法的理解

Math.min.apply(Math,arr) 这种方法用于求一个数组中的最小值,这令我很困惑,我不知道为甚么apply的第一个参数为什么重新传入Math对象,

《JavaScript高级程序设计》上说:为了正确设置this的值。 

这不是很好的解释,至少对于现阶段的我。

(1)顺藤摸瓜,我首先,研究了Math对象,从《Object-oriented javascript》上讲,

Math is a little different form the other built-in objects, because it cannot be used as a constructor to create objects. It is just a collection of functions and constants.

这貌似告诉我们,Math就是一个对象,min和max是它的方法,min和max接受的参数形式都是,Math.min(num1, num2, num3, ...)仅此而已。

(2)但是Math.min.apply(Math,arr) 这种奇怪的写法算什么呢?好吧,我们需要看看第二块,apply的用法。

call 和 apply的作用是什么?除了改变函数的this指向外,还有什么?---apply可以改变传递给函数参数的形式

从MDN上可以看到,这这属于apply的一种妙用


要理解的另一关键点:

apply的第一个参数,不可忽略!!!

if the method is a function in non-strict mode code, null and undefined will be replaced with the global object, and primitive values will be boxed

小结:对于普通函数fn,

function fn(arg1,arg2,arg3,...){
//....
}

fn(1,2,3)

fn.apply.(null,[1,2,3])

apply改变了参数的传入形式
















  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值