Skip to content

Commit 253be46

Browse files
committed
1 5 1 t5
1 parent 792e657 commit 253be46

File tree

3 files changed

+36
-45
lines changed

3 files changed

+36
-45
lines changed
Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
Try running it:
2+
Prueba a ejecutar:
33

44
```js run
55
let str = "Hello";
@@ -9,23 +9,16 @@ str.test = 5; // (*)
99
alert(str.test);
1010
```
1111

12-
There may be two kinds of result:
13-
1. `undefined`
14-
2. An error.
12+
Dependiendo del uso o no del modo estricto "use strict", el resultado puede ser:
13+
1. `undefined` (sin strict mode)
14+
2. Un error (strict mode)
1515

16-
Why? Let's replay what's happening at line `(*)`:
16+
¿Por qué? Repasemos qué ocurre en la línea `(*)`:
1717

18-
1. When a property of `str` is accessed, a "wrapper object" is created.
19-
2. The operation with the property is carried out on it. So, the object gets the `test` property.
20-
3. The operation finishes and the "wrapper object" disappears.
18+
1. Cuando se accede a una propiedad de `str`, un "wrapper object" es creado.
19+
2. Con modo estricto, alterarlo produce error.
20+
3. De otra manera, la operación es llevada a cabo y el objeto obtiene la propiedad `test`, pero después de ello el "wrapper object" desaparece, entonces en la última linea `str` queda sin rastros de la propiedad.
2121

22-
So, on the last line, `str` has no trace of the property. A new wrapper object for every object operation on a string.
23-
24-
Some browsers though may decide to further limit the programmer and disallow to assign properties to primitives at all. That's why in practice we can also see errors at line `(*)`. It's a little bit farther from the specification though.
25-
26-
**This example clearly shows that primitives are not objects.**
27-
28-
They just can not store data.
29-
30-
All property/method operations are performed with the help of temporary objects.
22+
**Este ejemlplo claramente muestra que los tipos primitivos no son objetos.**
3123

24+
Ellos no pueden almacenar datos adicionales.

1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ importance: 5
22

33
---
44

5-
# Can I add a string property?
5+
# ¿Puedo agregar un propiedad a un string?
66

77

8-
Consider the following code:
8+
Considera el siguiente código:
99

1010
```js
1111
let str = "Hello";
1212

13-
str.test = 5;
13+
str.test = 5;
1414

1515
alert(str.test);
1616
```
1717

18-
How do you think, will it work? What will be shown?
18+
Qué piensas, ¿funcionará? ¿Qué mostrará?

1-js/05-data-types/01-primitives-methods/article.md

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
# Métodos de primitivos
1+
# Métodos en datos primitivos
22

3-
JavaScript nos permite trabajar con datos primitivos (strings, numbers, etc.) como si fueran objetos.
3+
JavaScript nos permite trabajar con datos primitivos (strings, numbers, etc.) como si fueran objetos. Ellos también proveen métodos para ser llamados como tales. Los estudiaremos pronto, pero primero veamos cómo trabajan porque, por supuesto, los primitivos no son objetos (y aquí lo haremos más evidente).
44

5-
También proveen, como aquellos, métodos para ser llamados. Los estudiaremos pronto, pero primero veamos cómo trabajan porque, por supuesto, los primitivos no son objetos (y aquí lo haremos más evidente).
6-
7-
Veamos las diferencias clave entre primitivos y objetos.
5+
Veamos las principales diferencias entre primitivos y objetos.
86

97
Un primitivo
108

@@ -14,7 +12,7 @@ Un primitivo
1412
Un objeto
1513

1614
- Es capaz de almacenar múltiples valores como propiedades.
17-
- Puede ser creado con `{}`, por ejemplo: `{name: "John", age: 30}`. Hay otras clases de objetos en JavaScript; por ejemplo, las funciones (`function`) son objetos .
15+
- Puede ser creado con `{}`, por ejemplo: `{name: "John", age: 30}`. Hay otros tipos de objetos en JavaScript; por ejemplo, las funciones son objetos.
1816

1917
Una de las mejores cosas de los objetos es que podemos almacenar una función como una de sus propiedades.
2018

@@ -29,28 +27,28 @@ let john = {
2927
john.sayHi(); // Hi buddy!
3028
```
3129

32-
Aquí hemos hecho un función `john` con el método `sayHi` (saludar).
30+
Aquí hemos hecho un función `john` con el método `sayHi`(saludar).
3331

3432
Ya existen muchos objetos incorporados, como aquellos que trabajan con fechas, errores, elementos HTML, etc. Ellos tienen diferentes propiedades y métodos.
3533

3634
¡Pero estas características vienen con un costo!
3735

38-
Los objetos son más "pesados" que los primitivos. Requieren recursos adicionales para soportar su maquinaria interna. Pero como las propiedades y los métodos son tan útiles en programación, los motores JavaScript tratan de optimizarlos para reducir su carga adiional.
36+
Los objetos son más "pesados" que los tipos primitivos. Requieren recursos adicionales para soportar su maquinaria interna.
3937

4038
## Un primitivo como objeto
4139

4240
Aquí la paradoja que enfrentó el creador de JavaScript:
4341

44-
- Hay muchas cosas que uno quisiera hacer con primitivos como string o number. Sería grandioso acceder a métodos.
42+
- Hay muchas cosas que uno quisiera hacer con primitivos como string o number. Sería grandioso accederlas como métodos.
4543
- Los Primitivos deben ser tan rápidos y livianos como sea posible.
4644

47-
La solución se ve algo enrevesada, pero aquí está:
45+
La solución es algo enrevesada, pero aquí está:
4846

49-
1. Los primitivos son aún primitivos. Con un valor único, como es deseable.
47+
1. Los primitivos siguen siendo primitivos. Con un valor único, como es deseable.
5048
2. El lenguaje permite acceder a métodos y propiedades de strings, numbers, booleans y symbols.
51-
3. Cuando esto ocurre, un "object wrapper" (objeto envoltura) especial que provee la funcionalidad extra es creado y luego destruido.
49+
3. Para que esto funcione, un "object wrapper" (objeto envoltura) especial que provee la funcionalidad extra es creado, y luego destruido.
5250

53-
Los "object wrappers" son diferentes para cada tipo primitivo y son llamados: `String`, `Number`, `Boolean` y `Symbol`. Así proveen diferentes sets de métodos.
51+
Los "object wrappers" son diferentes para cada tipo primitivo y son llamados: `String`, `Number`, `Boolean` y `Symbol`. Así, proveen diferentes sets de métodos.
5452

5553
Por ejemplo, hay un método [str.toUpperCase()](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase) que devuelve un string en mayúsculas.
5654

@@ -68,7 +66,7 @@ Simple, ¿no es así? Lo que realmente ocurre en `str.toUpperCase()`:
6866
2. El método se ejecuta y devuelve un nuevo string (el mostrado con `alert`).
6967
3. El objeto especial es destruido, dejando solo el primitivo `str`.
7068

71-
Así las primitivas pueden proveer métodos y aún permanecer livianas.
69+
Así las primitivas pueden proporcionar métodos y aún permanecer livianas.
7270

7371
El motor JavaScript optimiza este proceso enormemente. Puede incluso saltear la creación del objeto extra por completo. Pero aún debe adherir a la especificación y comportarse como si creara uno.
7472

@@ -83,10 +81,10 @@ alert( n.toFixed(2) ); // 1.23
8381
Veremos más métodos específicos en los capítulos <info:number> y <info:string>.
8482

8583

86-
````warn header="Constructors `String/Number/Boolean` son de uso interno solamente"
87-
Algunos lenguajes como JAva permiten crear "wrapper objects" para primitivas explícitamente usando una sintaxis como `new Number(1)` o `new Boolean(false)`.
84+
````warn header="Los class constructor `String/Number/Boolean` son de uso interno solamente"
85+
Algunos lenguajes como Java nos permiten crear explícitamente "wrapper objects" para primitivas usando una sintaxis como `new Number(1)` o `new Boolean(false)`.
8886

89-
En JavaScript, eso también es posible por razones históricas, pero firmemente **no recomendado**. Las cosas enloquecerán en varios lugares.
87+
En JavaScript, eso también es posible por razones históricas, pero firmemente **desaconsejado**. Las cosas enloquecerán en varios lugares.
9088

9189
Por ejemplo:
9290

@@ -96,17 +94,17 @@ alert( typeof 1 ); // "number"
9694
alert( typeof new Number(1) ); // "object"!
9795
```
9896

99-
Los objetos son siempre verdaderos en un if, por ello el alert se mostrará:
97+
Los objetos son siempre verdaderos en un `if`, por ello el alert se mostrará:
10098

10199
```js run
102100
let zero = new Number(0);
103101

104102
if (zero) { // zero es true, porque es un objeto
105-
alert( "zero es verdadero?!?" );
103+
alert( "¡zero es verdadero!?" );
106104
}
107105
```
108106

109-
Por otro lado, usar las mismas funciones `String/Number/Boolean` sin `new` es totalmente sano y útil. Ellos convierten un valor al tipo correspondiente: a un string, number, o boolean (primitivo).
107+
Por otro lado, usar las mismas funciones `String/Number/Boolean` sin `new` es totalmente sano y útil. Ellos convierten un valor al tipo correspondiente: a un string, un number o un boolean (primitivos).
110108

111109
Por ejemplo, esto es perfectamente válido:
112110
```js
@@ -115,8 +113,8 @@ let num = Number("123"); // convierte string a number
115113
````
116114
117115
118-
````warn header="null/undefined have no methods"
119-
Las primitivas especiales `null` y `undefined` son excepciones. No tienen "wrapper objects" correspondientes y no proveen métodos. En ese sentido son "lo más primitivo".
116+
````warn header="null/undefined no tienen métodos"
117+
Las primitivas especiales `null` y `undefined` son excepciones. No tienen los "wrapper objects" correspondientes y no proporcionan métodos. En ese sentido son "lo más primitivo".
120118
121119
El intento de acceder a una propiedad de tal valor daría error:
122120
@@ -126,5 +124,5 @@ alert(null.test); // error
126124

127125
## Resumen
128126

129-
- Las primitivas excepto `null` y `undefined` proveen muchos métodos útiles. Los estudiaremos en los próximos capítulos.
130-
- Formalmente, estos métodos trabajan a través de objetos temporales, pero los motores de JavaScript están bien afinados para optimizarlos internamente, así que llamarlos no es costoso.
127+
- Los tipos primitivos excepto `null` y `undefined` proporcionan muchos métodos útiles. Los estudiaremos en los próximos capítulos.
128+
- Oficialmente, estos métodos trabajan a través de objetos temporales, pero los motores de JavaScript están bien afinados para optimizar esto internamente así que llamarlos no es costoso.

0 commit comments

Comments
 (0)