In javascript, methods of an object can be bound to another object at runtime. In short, javascript allows an object to "borrow" the method of another object:
object1 = { name:'frank', greet:function(){ alert('hello '+this.name) } }; object2 = { name:'andy' }; // Note that object2 has no greet method. // But we may "borrow" from object1: object1.greet.call(object2);
The call and apply methods of function objects (in javascript functions are objects as well) allows you to do this. So in your code you could say that the Nodelist is borrowing an array's slice method. What does the conversion is the fact that slice returns another array as it's result.