JavaScript TypeError: no se puede definir la propiedad «X»: «Obj» no es extensible

Esta excepción de JavaScript no puede definir la propiedad «x»: «obj» no es extensible ocurre cuando Object.preventExtensions() se usa en un objeto para que ya no sea extensible, por lo que ahora no se pueden agregar nuevas propiedades al objeto.

Mensaje:

TypeError: Cannot create property for a non-extensible object (Edge)
TypeError: can't define property "x": "obj" is not extensible (Firefox)
TypeError: Cannot define property: "x", object is not extensible. (Chrome)

Tipo de error:

TypeError

Causa del error: después de aplicar el método Object.preventExtensions() en un objeto, se agregan nuevas propiedades al objeto, lo cual no está permitido. 

Ejemplo 1: en este ejemplo, la nueva propiedad se agrega después de aplicar el método Object.preventExtensions() , por lo que se produjo el error.

HTML

<script>
    'use strict';
  
    var GFG_Obj = {'name': 'GFG'};
    Object.preventExtensions(GFG_Obj);
  
    GFG_Obj.age = 22; // error here
</script>

Salida (en consola):

TypeError: Cannot create property for a non-extensible object

Ejemplo 2: en este ejemplo, la nueva propiedad se agrega mediante el método defineProperty() después de aplicar el método Object.preventExtensions() , por lo que se produjo el error.

HTML

<script>
    'use strict';
  
    var GFG_Obj = {'name': 'GFG'};
    Object.preventExtensions(GFG_Obj);
  
    // error here
    Object.defineProperty(GFG_Obj, 
      'person', { dob: "02/11/1997" }
    );
</script>

Salida (en consola):

TypeError: Cannot define property 'person': object is not extensible

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar 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 *