不是
相等于直接写的
max()

解决方案 »

  1.   

    那请问 f.(o,[1,2]) 不是 相当于  o.f(1,2)? 那 f.(null,[1,2]) 不就是 null.f()?
      

  2.   

    null相当于顶级,所以关系下来相等于直接写
      

  3.   

    可能是由于Math不能创建实例吧,所以特殊点
      

  4.   

    很容易理解,主要是你还不理解apply的使用a=[10,20,30]
    alert(Math.max(10,20,30))
    alert(Math.max.apply(null,a))看看这个。
    因为Math.max传递的参数不能为数组,为了方便,可以用apply方法来实现用数组的参数来传递,这是很多时候运用的一个小技巧罢了。而第一个参数,是要替代的对象。没有要替代的,用null,也是很自然的。当然你也可以用call方法,如果用call方法,就和直接调用Math.max一样了,call和apply的功能是一样的。再比如:
    function foo () {
    bar.apply(null,arguments);
    }function bar () {
    for (var i=0; i<arguments.length; i++) {
    alert(arguments[i]);
    }
    }foo("I","am","never-online")
      

  5.   

    BlueDestiny(阿恺) 你举的那个例子可能不大好,如果max不是按照
    for (var i=0; i<arguments.length; i++) {
    alert(arguments[i]);
    }
    的方式来读取参数的话就不行。apply和call也不是能随便用的。一般是用在参数是数组类型的函数中的。