Configurar propiedades de clases en javascript

Revisión del 14:13 17 nov 2012 de Chuidiang (Discusión | contribuciones) (Página creada con '__TOC__ En javascript podemos definir una clase con propiedades o atributos de esta forma var a = {x:11, y:22} Estas propiedades son por defecto visibles y modificables, per…')

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Revisión del 14:13 17 nov 2012 de Chuidiang (Discusión | contribuciones) (Página creada con '__TOC__ En javascript podemos definir una clase con propiedades o atributos de esta forma var a = {x:11, y:22} Estas propiedades son por defecto visibles y modificables, per…')

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

En javascript podemos definir una clase con propiedades o atributos de esta forma

var a = {x:11, y:22}

Estas propiedades son por defecto visibles y modificables, pero tenemos formas de configurar todo esto. Vamos a ver algunas posibilidades


defineProperty()

La clase Object de javascript tiene un método defineProperty() que nos permite definir propiedades en otras clases, de forma similar a como definirmo x e y en el ejemplo anterior. La ventaja de defineProperty() es que nos permite configurar esa propiedad con cuatro posibles características:

  • value es el valor que queremos que tenga, 11 y 22 en el ejemplo anterior
  • writable puede ser true o false y nos indica si esa propiedad admite que se cambie su valor o no.
  • enumearable puede ser true o false y nos indica si esa propiedad aparecerá en un bucle que hagamos recorriendo las propiedades de un objeto (ver más abajo).
  • configurable puede ser true o false e indica si esa propiedad puede ser reconfigurada o no.

Object.defineProperty() admite tres parámetros, el objeto al que queremos añadir/modificar la propiedad, el nombre de la propiedad y las opciones que queremos ponerle/modificarle. Devuelve el objeto modificado, así que serían posibles estas llamadas

// Si estamos creando un objeto nuevo
var a = Object.defineProperty({}, "x", { value:11, writable:true, enumerable:true, configurable:true});

// Si el objeto ya está definido
var a = {};
Object.defineProperty(a, "x", { value:11, writable:true, enumerable:true, configurable:true});


value

Si tenemos una objeto a, podemos definirle una propiedad y darle un valor de esta forma

var a = {};
Object.defineProperty (a, "x", {value:11});
// ahora a.x vale 11