You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tenga en cuenta que `arr` también pertenece a la clase `Object`. Esto se debe a que `Array` hereda prototípicamente de `Object`.
@@ -54,8 +54,9 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
54
54
Por ejemplo:
55
55
56
56
```js run
57
-
// Instalar instancia de verificación que asume que
58
-
// cualquier cosa con propiedad canEat es un animal
57
+
58
+
// verificacion con instanceof que determina que
59
+
// cualquier cosa que tenga la propiedad canEat es un animal
59
60
60
61
classAnimal {
61
62
static [Symbol.hasInstance](obj) {
@@ -65,10 +66,10 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
65
66
66
67
let obj = { canEat:true };
67
68
68
-
alert(obj instanceof Animal); //verdadero: Animal[Symbol.hasInstance](obj) es llamada
69
+
alert(obj instanceof Animal); //true: Animal[Symbol.hasInstance](obj) es llamada
69
70
```
70
71
71
-
2. La mayoría de las clases no tienen `Symbol.hasInstance`. En ese caso, se utiliza la lógica estándar:`obj instanceOf Class` comprueba si `Class.prototype` es igual a uno de los prototipos en la cadena de prototipos `obj`.
72
+
2. La mayoría de las clases no tienen `Symbol.hasInstance`. En ese caso, se utiliza la lógica estándar:`obj instanceof Class` comprueba si `Class.prototype` es igual a uno de los prototipos en la cadena de prototipos `obj`.
72
73
73
74
En otras palabras, compara uno tras otro:
74
75
@@ -91,7 +92,7 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
91
92
92
93
let rabbit = new Rabbit();
93
94
*!*
94
-
alert(rabbit instanceof Animal); // verdadero
95
+
alert(rabbit instanceof Animal); // true
95
96
*/!*
96
97
97
98
// rabbit.__proto__ === Animal.prototype (no match)
@@ -106,7 +107,7 @@ Aquí está la ilustración de lo que `rabbit instanceof Animal` compara con `An
106
107
107
108
Por cierto, también hay un método [objA.isPrototypeOf(objB)](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/object/isPrototypeOf), que devuelve `true` si `objA` está en algún lugar de la cadena de prototipos para `objB`. Por lo tanto, la prueba de `obj instanceof Class` se puede reformular como `Class.prototype.isPrototypeOf(obj)`.
108
109
109
-
Es divertido, ¡pero el constructor `Class` en sí mismo no participa en el chequeo! Solo importa la cadena de prototipos y `Class.prototype`.
110
+
Es extraño, ¡pero el constructor `Class` en sí mismo no participa en el chequeo! Solo importa la cadena de prototipos y `Class.prototype`.
110
111
111
112
Eso puede llevar a consecuencias interesantes cuando se cambia una propiedad `prototype` después de crear el objeto.
112
113
@@ -121,7 +122,7 @@ Rabbit.prototype = {};
121
122
122
123
// ...ya no es un conejo!
123
124
*!*
124
-
alert( rabbit instanceof Rabbit ); //falso
125
+
alert( rabbit instanceof Rabbit ); //false
125
126
*/!*
126
127
```
127
128
@@ -201,7 +202,7 @@ Como puedes ver, el resultado es exactamente `Symbol.toStringTag` (si existe), e
201
202
202
203
Al final tenemos "typeof con esteroides" que no solo funciona para tipos de datos primitivos, sino también para objetos incorporados e incluso puede personalizarse.
203
204
204
-
Podemos usar `{}.toString.call` en lugar de `instanceof` para los objetos incorporados cuando deseamos obtener el tipo como una cadena en lugar de solo verificar.
205
+
Podemos usar `{}.toString.call` en lugar de `instanceof` para los objetos nativos cuando deseamos obtener el tipo como una cadena en lugar de solo verificar.
0 commit comments