Skip to content

Commit c6846c2

Browse files
authored
Update article.md
1 parent d5d099d commit c6846c2

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

1-js/09-classes/06-instanceof/article.md

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ La sintaxis es:
1010
```js
1111
obj instanceof Class
1212
```
13-
Devuelve `true` si `obj` pertenece a la `Class` o una clase que hereda de ella.
13+
Devuelve `true` si `obj` pertenece a `Class` o una clase que hereda de ella.
1414

1515
Por ejemplo:
1616

@@ -20,7 +20,7 @@ let rabbit = new Rabbit();
2020

2121
// ¿Es un objeto de la clase Rabbit?
2222
*!*
23-
alert( rabbit instanceof Rabbit ); // verdadero
23+
alert( rabbit instanceof Rabbit ); // true
2424
*/!*
2525
```
2626

@@ -32,15 +32,15 @@ También funciona con funciones de constructor:
3232
function Rabbit() {}
3333
*/!*
3434

35-
alert( new Rabbit() instanceof Rabbit ); // verdadero
35+
alert( new Rabbit() instanceof Rabbit ); // true
3636
```
3737

38-
...Y con clases integradas como `Array`:
38+
...Y con clases nativas como `Array`:
3939

4040
```js run
4141
let arr = [1, 2, 3];
42-
alert( arr instanceof Array ); // verdadero
43-
alert( arr instanceof Object ); // verdadero
42+
alert( arr instanceof Array ); // true
43+
alert( arr instanceof Object ); // true
4444
```
4545

4646
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
5454
Por ejemplo:
5555

5656
```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+
6561
class Animal {
6662
static [Symbol.hasInstance](obj) {
6763
if (obj.canEat) return true;
@@ -70,16 +66,12 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
7066

7167
let obj = { canEat: true };
7268

73-
alert(obj instanceof Animal); // verdadero: Animal[Symbol.hasInstance](obj) es llamada
69+
alert(obj instanceof Animal); // true: Animal[Symbol.hasInstance](obj) es llamada
7470
```
7571

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`.
7873

7974
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
8375

8476
```js
8577
obj.__proto__ === Class.prototype?
@@ -100,7 +92,7 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
10092
10193
let rabbit = new Rabbit();
10294
*!*
103-
alert(rabbit instanceof Animal); // verdadero
95+
alert(rabbit instanceof Animal); // true
10496
*/!*
10597
10698
// rabbit.__proto__ === Animal.prototype (no match)
@@ -115,7 +107,7 @@ Aquí está la ilustración de lo que `rabbit instanceof Animal` compara con `An
115107

116108
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)`.
117109

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`.
119111

120112
Eso puede llevar a consecuencias interesantes cuando se cambia una propiedad `prototype` después de crear el objeto.
121113

@@ -130,7 +122,7 @@ Rabbit.prototype = {};
130122

131123
// ...ya no es un conejo!
132124
*!*
133-
alert( rabbit instanceof Rabbit ); // falso
125+
alert( rabbit instanceof Rabbit ); // false
134126
*/!*
135127
```
136128
@@ -210,7 +202,7 @@ Como puedes ver, el resultado es exactamente `Symbol.toStringTag` (si existe), e
210202
211203
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.
212204
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.
214206
215207
## Resumen
216208

0 commit comments

Comments
 (0)