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,14 +54,10 @@ 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
-
<<<<<<<HEAD
58
-
// Instalar instancia de verificación que asume que
59
-
// cualquier cosa con propiedad canEat es un animal
60
-
61
-
=======
62
-
// set up instanceof check that assumes that
63
-
// anything with canEat property is an animal
64
-
>>>>>>>51bc6d3cdc16b6eb79cb88820a58c4f037f3bf19
57
+
58
+
// verificacion con instanceof que determina que
59
+
// cualquier cosa que tenga la propiedad canEat es un animal
60
+
65
61
classAnimal {
66
62
static [Symbol.hasInstance](obj) {
67
63
if (obj.canEat) returntrue;
@@ -70,16 +66,12 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
70
66
71
67
let obj = { canEat:true };
72
68
73
-
alert(obj instanceof Animal); //verdadero: Animal[Symbol.hasInstance](obj) es llamada
69
+
alert(obj instanceof Animal); //true: Animal[Symbol.hasInstance](obj) es llamada
74
70
```
75
71
76
-
<<<<<<<HEAD
77
-
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`.
78
73
79
74
En otras palabras, compara uno tras otro:
80
-
=======
81
-
2. Most classes do not have `Symbol.hasInstance`. In that case, the standard logic is used:`obj instanceof Class` checks whether `Class.prototype` is equal to one of the prototypes in the `obj` prototype chain.
82
-
>>>>>>>51bc6d3cdc16b6eb79cb88820a58c4f037f3bf19
83
75
84
76
```js
85
77
obj.__proto__ === Class.prototype?
@@ -100,7 +92,7 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
100
92
101
93
let rabbit = new Rabbit();
102
94
*!*
103
-
alert(rabbit instanceof Animal); // verdadero
95
+
alert(rabbit instanceof Animal); // true
104
96
*/!*
105
97
106
98
// rabbit.__proto__ === Animal.prototype (no match)
@@ -115,7 +107,7 @@ Aquí está la ilustración de lo que `rabbit instanceof Animal` compara con `An
115
107
116
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)`.
117
109
118
-
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`.
119
111
120
112
Eso puede llevar a consecuencias interesantes cuando se cambia una propiedad `prototype` después de crear el objeto.
121
113
@@ -130,7 +122,7 @@ Rabbit.prototype = {};
130
122
131
123
// ...ya no es un conejo!
132
124
*!*
133
-
alert( rabbit instanceof Rabbit ); //falso
125
+
alert( rabbit instanceof Rabbit ); //false
134
126
*/!*
135
127
```
136
128
@@ -210,7 +202,7 @@ Como puedes ver, el resultado es exactamente `Symbol.toStringTag` (si existe), e
210
202
211
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.
212
204
213
-
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