javascript 'curry', need some explanations on this code
<p>I am reading the book "JavaScript-The Good Parts", in chapter 4.14 Curry, the book gives the following example:</p>

<pre><code>Function.method('curry', function(){
    var slice = Array.prototype.slice,
        args = slice.apply(arguments), //1st-arguments
        that=this;

    return function(){
       return that.apply(null, args.concat(slice.apply(arguments))); //2nd-arguments
    }
})

var add1=add.curry(1);
document.writeln(add1(6)); // 7
</code></pre>

<p>I have two questions on this code:</p>

<ol>
<li><p>There are two places using '<strong>arguments</strong>'. In the method invoking in the last two lines code, is it so that '<strong>1</strong>' goes to the 1st-arguments and '<strong>6</strong>' goes to the 2nd-arguments?</p></li>
<li><p>There is a line of code <code>apply(null, args.concat(slice.apply(arguments)))</code>, why does it <code>apply(null,...)</code> here?, what is the sense to apply a argument to a null object?</p></li>
</ol>
