Objeto.freeze( ) en JavaScript

¿Objetos y constructores de objetos en JavaScript?  
En el vivo mundo de la programación orientada a objetos ya sabemos la importancia de las clases y los objetos pero a diferencia de otros lenguajes de programación, JavaScript no tiene las clases tradicionales como se ve en otros lenguajes. Pero JavaScript tiene objetos y constructores que funcionan principalmente de la misma manera para realizar el mismo tipo de operaciones. 
 

  • Los constructores son funciones generales de JavaScript que se utilizan con la palabra clave «nuevo». Los constructores son de dos tipos en JavaScript, es decir, constructores incorporados (array y objeto) y constructores personalizados (definen propiedades y métodos para objetos específicos).
  • Los constructores pueden ser útiles cuando necesitamos una forma de crear un «tipo» de objeto que se pueda usar varias veces sin tener que redefinir el objeto cada vez y esto podría lograrse usando la función Object Constructor. Es una convención usar mayúsculas en el nombre de los constructores para distinguirlos de las funciones regulares.

Por ejemplo, considere el siguiente código:
 

function Automobile(color) {
  this.color=color;
}

var vehicle1 = new Automobile ("red");

La función «Automóvil()» es un constructor de objetos, y sus propiedades y métodos, es decir, «color», se declara dentro de ella con el prefijo «esto». Los objetos definidos usando un constructor de objetos se convierten en instantes usando la palabra clave «nuevo». 
Cuando se llama a new Automobile(), JavaScript hace dos cosas: 
 

  1. Crea un nuevo objeto nuevo (instancia) Automobile() y lo asigna a una variable.
  2. Establece la propiedad del constructor, es decir, el «color» del objeto en Automóvil.

Método Object.freeze() 
Entre los métodos constructores de objetos, hay un método Object.freeze() que se usa para congelar un objeto. Inmovilizar un objeto no permite que se agreguen nuevas propiedades a un objeto y evita que se eliminen o alteren las propiedades existentes. Object.freeze() conserva la enumerabilidad, configurabilidad, escritura y el prototipo del objeto. Devuelve el objeto pasado y no crea una copia congelada.
Aplicaciones: 
 

  • Object.freeze() se usa para congelar objetos y arrays.
  • Object.freeze() se usa para hacer que un objeto sea inmutable.

Sintaxis: 
 

Object.freeze(obj)

Parámetros utilizados: 
 

  1. obj : Es el objeto que se tiene que congelar.

Valor devuelto: 
Object.freeze() devuelve el objeto que se pasó a la función.
A continuación se proporcionan ejemplos de la función anterior.
Ejemplos: 
 

Input : const obj1 = { property1: 'initial_data'};
        const obj2 = Object.freeze(obj1);
        obj2.property1 = 'new_data';
        console.log(obj2.property1);

Output : "initial_data"

Explicación: en este ejemplo, al objeto «obj2» se le ha asignado la propiedad del objeto «obj1» y las propiedades de «obj1» están congeladas, por lo tanto, se impide que se agreguen nuevas propiedades y valores a «obj2». 
 

Input : var obj = { prop: function() {}, name: 'adam' };
        console.log(obj);
        obj.name = 'billy';
        delete obj.prop;
        console.log(obj);
        var o = Object.freeze(obj);
        obj.name = 'chris';
        console.log(obj);

Output : Object { prop: function () {}, name: "adam" }
         Object { name: "billy" }
         Object { name: "billy" }

Explicación: en este ejemplo, al objeto «obj» se le asignó «prop: función», que luego se eliminó porque el objeto «obj no estaba congelado. Después de eso, a un nuevo objeto «o» se le asignaron los valores congelados de «obj», lo que impidió que se realizaran más actualizaciones.
Los códigos para la función anterior se proporcionan a continuación.
Código 1:
 

html

<script>
<!-- creating an object constructor and assigning values to it -->
const obj1 = { property1: 'initial_data'};
 
<!--creating a second object which will freeze the properties of the first object-->
const obj2 = Object.freeze(obj1);
 
<!-- Updating the properties of the frozen object -->
obj2.property1 = 'new_data';
 
<!-- Displaying the properties of the  frozen object -->
console.log(obj2.property1);
</script>

PRODUCCIÓN : 
 

"initial_data"

Código 2:
 

html

<script>
<!-- creating an object constructor and assigning values to it -->
var obj = { prop: function() {}, name: 'adam' };
 
<!-- Displaying the properties of the object created -->
console.log(obj);
 
<!-- Updating the properties of the object -->
obj.name = 'billy';
delete obj.prop;
<!-- Displaying the updated properties of the object -->
console.log(obj);
 
<!-- Freezing the object using object.freeze() method -->
var o = Object.freeze(obj);
 
<!-- Updating the properties of the frozen object -->
obj.name = 'chris';
 
<!-- Displaying the properties of the  frozen object -->
console.log(obj);
 
</script>

PRODUCCIÓN : 
 

Object { prop: function () {}, name: "adam" }
Object { name: "billy" }
Object { name: "billy" }

Excepciones: 
 

  • Causa un TypeError si el argumento pasado no es un objeto.

Navegadores compatibles:

  • Google Chrome 6.0 y superior
  • Internet Explorer 9.0 y superior
  • Mozilla 4.0 y superior
  • Ópera 11.1 y superior
  • Safari 5.0 y superior

Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
 

Publicación traducida automáticamente

Artículo escrito por Shubrodeep Banerjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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