Array.prototype en JavaScript

Array.prototype es el objeto base del que heredan todos los arrays en JavaScript y donde se definen sus métodos principales. Gracias a la herencia prototípica, los arrays pueden compartir funcionalidades como map(), filter() o push() sin duplicar código. En esta guía exploraremos su estructura y su aplicación práctica en proyectos reales.

array.prototype en javascript

1. ¿Qué es Array.prototype en JavaScript?

Array.prototype es el objeto base del cual heredan todos los arrays en JavaScript.

Cuando creas un array, ése array no contiene directamente métodos como map(), push() o filter().
Esos métodos viven en Array.prototype, y el array puede usarlos gracias a la herencia prototípica.

1.1. Ejemplo:

Supongamos que tenemos este array que representa una fila de personas o una lista de tareas pendientes:

const fila = ["Ana", "Betto", "Carla", "David"];Lenguaje del código: JavaScript (javascript)

Ahora, queremos reorganizar los valores del array de una manera diferente, específicamente queremos que el último sea el primero (invertir el orden). Para eso, podemos usar el método .reverse().

// Usamos el método directamente
fila.reverse();

console.log(fila); // Resultado: ["David", "Carla", "Betto", "Ana"]Lenguaje del código: JavaScript (javascript)

🔎La gran pregunta: ¿De dónde salió .reverse()?

Como vemos aquí, nosotros jamás implementamos el método .reverse() dentro de nuestro array fila. Si te fijas en la definición de fila, solo hay strings, no hay ninguna función escrita por nosotros. Entonces, ¿por qué lo podemos usar sin que JavaScript nos lance un error de «función no encontrada»?

Aquí es donde entra en juego el PROTOTIPO.

Podemos usarlo porque todos los arrays, por defecto, apuntan a su prototipo padre en la cadena de prototipos, que es Array.prototype.

Dentro de dicho prototipo, el motor de JavaScript (como V8 en Chrome o Node.js) incluye por defecto una librería de métodos listos para usar. Cuando tú escribes fila.reverse(), ocurre lo siguiente:

  1. JavaScript busca reverse dentro del objeto fila. No lo encuentra.
  2. Sube un escalón en la «cadena» hacia el padre: Array.prototype.
  3. ¡Ahí está! El motor encuentra la definición de reverse que viene integrada globalmente.
  4. La ejecuta usando los datos de tu array fila.

Entonces, la cadena prototípica de este ejemplo sería:

numeros
   ↓
Array.prototype
   ↓
Object.prototype
   ↓
nullLenguaje del código: JavaScript (javascript)

¿Y que sería Object.prototype y null?

Primero veamos esta diferencia……..

2. Diferencia entre Array.prototype y Object.prototype

En JavaScript todo es un objeto, pero no todos los objetos son arrays.
Por eso existen distintos prototipos en la cadena de herencia.

La diferencia principal es:

  • Object.prototype → prototipo base de todos los objetos
  • Array.prototype → prototipo específico de los arrays

🧩 Jerarquía real de herencia:

Cuando creás un array:

const numeros = [1, 2, 3];Lenguaje del código: JavaScript (javascript)

Internamente ocurre esta cadena (como ya mencionamos):

numeros
   ↓
Array.prototype
   ↓
Object.prototype
   ↓
nullLenguaje del código: JavaScript (javascript)

✅ Un array hereda de ambos.

2.1. ¿Entonces qué es Object.prototype? → el padre de todo

Es el prototipo más general.

Contiene métodos disponibles para todos los objetos.

Ejemplo

const usuario = {
  nombre: "Juan"
};

console.log(usuario.toString());

console.log(usuario.hasOwnProperty("nombre"));Lenguaje del código: JavaScript (javascript)

🔎 Explicación:

Estos métodos funcionan porque existen en:

Object.prototypeLenguaje del código: JavaScript (javascript)

Ejemplo comprobable:

console.log(usuario.__proto__ === Object.prototype); // trueLenguaje del código: JavaScript (javascript)

✔ Métodos típicos de Object.prototype:

  • toString()
  • hasOwnProperty()
  • valueOf()
  • isPrototypeOf()

2.2. Diferencia con Array.prototype → comportamiento exclusivo de arrays

Los arrays necesitan funcionalidades especiales.

Por eso existe un prototipo adicional.

Ejemplo

const numeros = [1, 2, 3];

numeros.push(4);
numeros.map(n => n * 2);Lenguaje del código: JavaScript (javascript)

🔎 Explicación

Estos métodos existen en:

Array.prototypeLenguaje del código: JavaScript (javascript)

Verificación:

console.log(numeros.__proto__ === Array.prototype); // trueLenguaje del código: JavaScript (javascript)

✔ Métodos propios de arrays:

  • push()
  • pop()
  • map()
  • filter()
  • forEach()
  • slice()

🚨¿Y QUÉ PASA CON null)

Efectivamente, null es el último eslabón de la cadena. Es el muro donde termina la búsqueda. Si intentamos ejecutar un método inexistente como .noExisto(), el motor de JavaScript hace este recorrido:

  1. En el Array (fila): Busca .noExisto(). No está.
  2. En Array.prototype: Sube y busca. No está.
  3. En Object.prototype: Sube al «abuelo» y busca. No está.
  4. En null: Llega al final. Como null no es un objeto, la búsqueda se detiene.

Aquí JavaScript que nos devuelve – ¿undefined o Error?

Aquí es donde debemos precisar:

  • Si intentas acceder a una propiedad que no existe (ej: fila.noExisto), JavaScript te devuelve undefined.
  • Pero si intentas ejecutar esa propiedad como una función o método (ej: fila.noExisto()), JavaScript no devuelve undefined, sino que lanza un error crítico: TypeError: fila.noExisto is not a function.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *