分析apply,call方法

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

我打算从两点进行分析

1.Math.min()

2.apply,call方法

先是一:

Math.min中可以获取一串数字的最小值,格式为:Math.min(1,2,6,10,0,4)

这样可以直接获取最小的数,请注意是这种格式的写法,因为我们的需求是从数组中寻找

我们大概了解了其一

然后二:

apply和call方法是改变this指向

举个例子:

        var obj = {
            age:20,
            sayAge:function () {
                console.log(this.age)
            }
        }
        obj.sayAge() //是obj中的20

        var obj2 = {
            age:1000
        }
        obj.sayAge.call(obj2) //是obj2中的1000

call和apply方法就是在原有的方法上改变了this的指向,变成了括号内那个对象

call和apply两者区别就是前者直接写参数,后者是数组

obj.sayAge.call(obj2,1,2,3)

obj.sayAge.call(obj2,[1,2,3])

但是这些并没有解决我想要的问题

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

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

fn(1,2,3)

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

apply改变了参数的传入形式

网上的资料众多纷纭,根本找不到我想要的结果,

希望大家见谅并积极指出...

原文地址:https://www.cnblogs.com/xufeng1994/p/10419579.html