How is 'this' context set in Array.prototype.slice.call(arguments)
<p>There are a lot of questions and answers that cover this technique, but i can't seem to find an answer to how the required <code>this</code> context gets set for call() or apply().</p>

<p>I understand that </p>

<p><code>Array.prototype.slice.call(arguments)</code></p>

<p>is somewhat equivalent to</p>

<p><code>arguments.slice()</code></p>

<p>with <code>arguments</code> being converted into a proper array object, but if i try to use this convention with my own objects it doesn't work. I tried to write a small test doing this:</p>

<pre><code>var Logger = function(){};
Logger.prototype.print = function(msg){ 
   console.log ((new Date()).getTime().toString() + msg); 
};

(function(){
   var o = {
    name: "Hi Bob!",
   };

   var l = new Logger();
   l.print(o.name); //works fine
   Logger.prototype.print.call(o.name); //calls print method, but 'msg' is undefined
}());
</code></pre>

<p>Is there something special in regards to the <code>Array.prototype</code> or the <code>arguments</code> object that allows that function application to work without the necessary context?</p>
