¿Cuál es la diferencia entre Array.prototype.reverse y Array.reverse en Javascript?

La pregunta que tengo que ver con una aplicación de agregar un nuevo método a la existenteConstructor de cuerdas. En el Programa Orientado a Objetos para Javascript de Stoyan Stefanov, hay un ejemplo del uso deConstructor de matriz .reverse () método para crear uno para elConstructor de cuerdas. Aquí está el ejemplo:

String.prototype.reverse = function() {
     return Array.prototype.reverse.apply(this.split('')).join('');
}

Pensé que el.marcha atrás() El método de Array pertenecía directamente al objeto de Array. De hecho, cuando intento hacer el segundo bit de código con esta declaración :,

String.prototype.reverse = function() {
     return Array.reverse.apply(this.split('')).join(''); //WITHOUT the .prototype
}

var rev = "karunesh".reverse(); //applying the code here

Recibo un error en la Consola Firebug que dice:"TypeError: falta el argumento 0 al llamar a la función Array.reverse". Eso no tiene ningún sentido para mí.

Y por supuesto, si vuelvo a añadir en el.prototipo, funciona perfectamente bien.

Además, si es el caso, tengo que recurrir al prototipo para acceder almétodo .reverse () desde elObjeto de matriz, Entonces, ¿es el caso que tengo que hacer eso para cualquier objeto incorporado en Javascript?

¡Gracias por la ayuda por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta