La nueva palabra clave en JavaScript se usa para crear una instancia de un objeto que tiene una función de constructor. Al llamar a la función constructora con el operador ‘nuevo’, se toman las siguientes acciones:
- Se crea un nuevo objeto vacío.
- La propiedad ‘Prototipo’ interna del nuevo objeto (__proto__) se establece igual que el prototipo de la función de construcción.
- La variable ‘esto’ apunta al objeto recién creado. Vincula la propiedad que se declara con la palabra clave ‘this’ al nuevo objeto.
- Se devuelve un objeto recién creado cuando la función constructora devuelve un valor no primitivo (objeto JavaScript personalizado). Si la función constructora devuelve un valor primitivo, se ignorará. Al final de la función, se devuelve ‘esto’ si no hay una declaración de devolución en el cuerpo de la función.
Sintaxis:
new constructorFunction(arguments)
Parámetros:
- ConstructorFunction: una clase o función que especifica el tipo de instancia del objeto.
- Argumentos: una lista de valores con los que se llamará al constructor.
Ejemplo 1:
<script> function Fruit(color, taste, seeds) { this.color = color; this.taste = taste; this.seeds = seeds; } // Create an object const fruit1 = new Fruit('Yellow', 'Sweet', 1); // Display the result document.write(fruit1.color); </script>
Producción:
Yellow
En el ejemplo anterior, la palabra clave ‘nuevo’ crea un objeto vacío. Aquí, Fruit() incluye tres propiedades ‘color’, ‘sabor’ y ‘semillas’ que se declaran con la palabra clave ‘this’. Entonces, un nuevo objeto vacío ahora incluirá todas estas propiedades, es decir, ‘color’, ‘sabor’ y ‘semillas’. Los objetos recién creados se devuelven como fruit1().
Ejemplo 2:
<script> function func() { var c = 1; this.a = 100; } // Set the function prototype func.prototype.b = 200; // Create an object var obj = new func(); // Display the result document.write(obj.a); document.write("\n"); document.write(obj.b); </script>
Producción:
100 200
En el ejemplo anterior, la palabra clave ‘nuevo’ crea un objeto vacío y luego establece la propiedad ‘prototipo’ de este objeto vacío en la propiedad prototipo de func(). La nueva propiedad ‘b’ se asigna usando func.prototype.y. Entonces, el nuevo objeto también incluirá la propiedad ‘b’. Luego vincula todas las propiedades y funciones declaradas con esta palabra clave a un nuevo objeto vacío. Aquí, func() incluye solo una propiedad ‘a’ que se declara con esta palabra clave. Entonces, el nuevo objeto vacío ahora incluirá la propiedad ‘a’. El func() también incluye la variable ‘c’ que no se declara con esta palabra clave. Entonces ‘c’ no se incluirá en el nuevo objeto. Por último, se devuelve el objeto recién creado. Tenga en cuenta que func() no incluye una declaración de retorno. El compilador insertará implícitamente ‘return this’ al final.