Skip to content

Commit 54d4a58

Browse files
authored
Sync with upstream @ 51bc6d3
2 parents ed90325 + c6846c2 commit 54d4a58

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

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

Lines changed: 15 additions & 14 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,8 +54,9 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
5454
Por ejemplo:
5555

5656
```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
5960

6061
class Animal {
6162
static [Symbol.hasInstance](obj) {
@@ -65,10 +66,10 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
6566

6667
let obj = { canEat: true };
6768

68-
alert(obj instanceof Animal); // verdadero: Animal[Symbol.hasInstance](obj) es llamada
69+
alert(obj instanceof Animal); // true: Animal[Symbol.hasInstance](obj) es llamada
6970
```
7071

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

7374
En otras palabras, compara uno tras otro:
7475

@@ -91,7 +92,7 @@ El algoritmo de `obj instanceof Class` funciona más o menos de la siguiente man
9192
9293
let rabbit = new Rabbit();
9394
*!*
94-
alert(rabbit instanceof Animal); // verdadero
95+
alert(rabbit instanceof Animal); // true
9596
*/!*
9697
9798
// rabbit.__proto__ === Animal.prototype (no match)
@@ -106,7 +107,7 @@ Aquí está la ilustración de lo que `rabbit instanceof Animal` compara con `An
106107

107108
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)`.
108109

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

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

@@ -121,7 +122,7 @@ Rabbit.prototype = {};
121122

122123
// ...ya no es un conejo!
123124
*!*
124-
alert( rabbit instanceof Rabbit ); // falso
125+
alert( rabbit instanceof Rabbit ); // false
125126
*/!*
126127
```
127128
@@ -201,7 +202,7 @@ Como puedes ver, el resultado es exactamente `Symbol.toStringTag` (si existe), e
201202
202203
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.
203204
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.
205206
206207
## Resumen
207208

0 commit comments

Comments
 (0)