¿Por qué aplicar ya no está vinculado a funciones en Javascript?

Supongamos, por el bien de esta pregunta, que quiero poder crear una función en Javascript que anexe todos los elementos de una matriz a otra matriz. Una forma de lograr esto, si tiene acceso a la matriz de destino, es decir:

var destination = [1,2,3];
var source = [4,5];
Array.prototype.push.apply(destination, source);
console.log(destination); // [1,2,3,4,5]

Ahora, dado que Array.prototype.push.apply es bastante feo, quiero darle un alias a algo más agradable, como:

var pushAll = Array.prototype.push.apply;

A lo que debería poder llamar con dos argumentos, el contexto (destino) y una matriz de argumentos (fuente). Sin embargo, cuando trato de usar el alias, esto sucede:

pushAll(destination, [6,7]);
TypeError: Function.prototype.apply was called on [object global], which
is a object and not a function

Así que claramente elapply la función no está vinculada apush, lo que me llevó a probar esto:

var pushAll = Function.prototype.apply.bind(Array.prototype.push);
pushAll(destination, [6,7]);
console.log(destination); // [1,2,3,4,5,6,7,8]

Que claramente funciona bien. Mi pregunta es, ¿por qué tengo que vincular el método push para aplicar? ¿No debería estar obligado a aplicar Array.prototype.push.apply? ¿Por qué llamarlo con un nombre diferente resulta en llamarlo en un contexto independiente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta