Física, pregunta formulada por carlosgzz03, hace 1 mes

Se puede obtener mucha información acerca de las propiedades de los objetos mediante el estudio de su: *
A) Espectro molecular
B) Modelo atómico
C) Espectro electromagnético
D) Composición molecular
PORFAA


carlosgzz03: pongo coronaaa

Respuestas a la pregunta

Contestado por dannacaalro10
0

Explicación: respuesta espectro electromagnetico

Cuando nos planteamos analizar las propiedades de un objeto descubrimos que existen varios tipos de propiedades y que se comportan de forma diferente. La primera característica que tenemos que tener en cuenta es la diferencia entre propiedades enumerables y no enumerables. El segundo lugar tenemos que tener en cuenta las propiedades propias y heredadas. También tenemos que considerar las propiedades que se puede establecer como de sólo lectura o no configurables. Por último, hay que tener en cuenta alguna convención para definir propiedades privadas. Todos estos aspectos son importantes a la hora de trabajar con las propiedades de un objeto.

Con la excusa del desarrollo de una función universal para comparar cualquier tipo de dato en Javascript, de la que venimos tratando en los últimos artículos, ahora vamos a dar un repaso a todas las características de las propiedades, intentando explicar cómo funcionan y que tenemos que tener en cuenta para trabajar de forma consistente.

Propiedades enumerables y no enumerables

La diferencia entre las propiedades enumerables o no enumerables es:

las propiedades enumerables son aquellas que se obtienen al recorrer un bucle for in (que procesa las propiedades enumerables propias y heredadas) o las devueltas por Object.keys() (sólo las enumerables propiedades propias).

las propiedades no enumerables son las propiedades existentes que no se incluyen en la definición anterior y por lo tanto son ignoradas en los bucles for in y por Object.keys().

Por defecto, Javascript define las propiedades de los objetos predefinidos como no enumerables y de esta forma, aunque son parte del objeto, no se procesan cuando se recorren en un bucle. En nuestros objetos también podemos definir propiedades no enumerables por medio de los descriptores de las siguientes funciones:

Object.create(prototipo, descriptores)

Object.defineProperty(objeto, "propiedad", descriptor)

Object.defineProperties(objeto, descriptores)

El motivo para definir una propiedad como no enumerable es evitar que este valor sea relevante al recorrer el objeto con un bucle for in, pero esto no quiere decir que no sean importantes. Las propiedades no enumerables pueden ser muy importantes, por ejemplo, a la hora de comparar dos objetos y confirmar si son realmente equivalentes.

Un caso bastante interesante es la comparación de matrices. Tenemos que recordar que las matrices son un tipo de objeto y como propiedades enumerables tienen todos sus elementos, es decir, son enumerables el índice de cada uno de los elementos: 0, 1, etc. Una propiedad propia no enumerable que tienen las matrices es length, que no tiene que aparecer al recorrer la matriz, pero es una propiedad importante a la hora de hacer comparaciones. Si sólo comparamos las propiedades no enumerables estas dos matrices parecen iguales, pero realmente no lo son:

1

2

3

4

5

6

7

var arr1 = ['a','b','c'];

var arr2 = ['a','b','c'];

arr2.length = 10;

console.log(arr1); // [ 'a', 'b', 'c' ]

console.log(Object.keys(arr1)); // [ '0', '1', '2' ]

console.log(arr2); // [ 'a', 'b', 'c', , , , , , , ]

console.log(Object.keys(arr2)); // [ '0', '1', '2' ]

Para obtener las propiedades propias enumerables y no enumerables se utiliza Object.getOwnPropertyNames(). Este método nos devuelve los nombres de todas las propiedades propias del objeto, pero no las heredadas (que veremos a continuación).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

// jshints version: 6

var priv = new WeakMap();

class Parent {

constructor(a, b) {

this.a = a;

priv.set(this, {b});

}

get b() {

return priv.get(this).b;

}

set b(value) {

var tmp = priv.get(this);

tmp.b = value;

priv.set(this, tmp);

}

}

class Child extends Parent {

constructor(x, b, c) {

super(x);

priv.set(this, {});

}

get c() {

return priv.get(this).c;

}

set c(value) {

var tmp = priv.get(this);

tmp.c = value;

Otras preguntas