Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
El operador new permite a los desarrolladores crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados que tiene un función constructora.
Una clase o función que especifica el tipo de instancia del objeto.
argumentsUna lista de valores con los que se llamará al constructor.
La palabra clave new hace lo siguiente:
La creación de un objeto definido por el usuario requiere dos pasos:
Para definir un tipo de objeto, crea una función para el tipo de objeto que especifique su nombre y propiedades. Un objeto puede tener una propiedad que en sí misma es otro objeto. Ve los siguientes ejemplos.
Cuando se ejecuta el código new Foo(...), sucede lo siguiente:
Siempre puedes agregar una propiedad a un objeto definido previamente. Por ejemplo, la instrucción car1.color = "black" agrega una propiedad color a car1 y le asigna un valor de "black". Sin embargo, esto no afecta a ningún otro objeto. Para agregar la nueva propiedad a todos los objetos del mismo tipo, debes agregar la propiedad a la definición del tipo de objeto Car.
Puedes agregar una propiedad compartida a un tipo de objeto definido previamente mediante la propiedad Function.prototype. Esto define una propiedad que comparten todos los objetos creados con esa función, en lugar de solo una instancia del tipo de objeto. El siguiente código agrega una propiedad de color con el valor "color original" a todos los objetos de tipo Car, y luego redefine ese valor con la cadena "black" solo en la instancia car1 del objeto. Para obtener más información, consulta prototype.
Nota: Si no escribiste el operador new, la función constructor se invocará como cualquier función normal, sin crear un objeto. En este caso, el valor de this también es diferente.
Supongamos que deseas crear un tipo de objeto para cars. Quieres que este tipo de objeto se llame Car, y quieres que tenga propiedades para marca, modelo y año (make, model y year en inglés respectivamente). Para ello, podrías escribir la siguiente función:
Ahora puedes crear un objeto llamado myCar de la siguiente manera:
Esta declaración crea myCar y le asigna los valores especificados para sus propiedades. Entonces el valor de myCar.make es la cadena "Eagle", myCar.year es el entero 1993, y así sucesivamente.
Puedes crear cualquier número de objetos car mediante llamadas a new. Por ejemplo:
Supongamos que defines un objeto llamado Person de la siguiente manera:
Y luego creas una instancia de dos nuevos objetos Person de la siguiente manera:
Luego, puedes reescribir la definición de Car para incluir una propiedad para owner (propietario en español) que tome un objeto Person, de la siguiente manera:
Para crear instancias de los nuevos objetos, utiliza lo siguiente:
En lugar de pasar una cadena literal o un valor entero al crear los nuevos objetos, las declaraciones anteriores pasan los objetos rand y ken como parámetros para los propietarios. Para conocer el nombre del propietario de car2, puedes acceder a la siguiente propiedad:
| ECMAScript® 2027 Language Specification # sec-new-operator |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 24 jun 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.