Skip to content

Commit b29aa56

Browse files
authored
Merge pull request #449 from joaquinelio/susy201124
Susy201124
2 parents a2d1070 + bfcfbad commit b29aa56

File tree

6 files changed

+31
-30
lines changed

6 files changed

+31
-30
lines changed

1-js/02-first-steps/01-hello-world/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Primero, veamos cómo adjuntamos un script a una página web. Para entornos del
99

1010
## La etiqueta "script"
1111

12-
Los programas de JavaScript se pueden insertar en cualquier parte de un documento HTML con la ayuda de la etiqueta `<script>`.
12+
Los programas de JavaScript se pueden insertar en casi cualquier parte de un documento HTML con el uso de la etiqueta `<script>`.
1313

1414
Por ejemplo:
1515

1-js/04-object-basics/01-object/article.md

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,30 +92,6 @@ let user = {
9292
```
9393
Eso se llama una coma "final" o "colgante". Facilita agregar, eliminar y mover propiedades, porque todas las líneas se vuelven similares.
9494

95-
````smart header="Los objetos con const pueden cambiarse"
96-
Toma en cuenta: un objeto declarado con `const` *puede* ser modificado.
97-
98-
Por ejemplo:
99-
100-
```js run
101-
const user = {
102-
name: "John"
103-
};
104-
105-
*!*
106-
user.name = "Pete"; // (*)
107-
*/!*
108-
109-
alert(user.name); // Pete
110-
```
111-
112-
Puede parecer que la linea `(*)` ocasionaría un error, pero no. El `const` restablece el valor de `user` pero no su contenido.
113-
114-
El `const` podría dar error solo si intentamos asignar `user=...` en la totalidad de su contenido.
115-
116-
Hay otra manera de crear objetos con propiedades constantes, las veremos después en el capítulo <info:property-descriptors>.
117-
````
118-
11995
## Corchetes
12096

12197
La notación de punto no funciona para acceder a propiedades con claves de más de una palabra:

1-js/04-object-basics/02-object-copy/article.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ admin.name = 'Pete'; // cambiado por la referencia "admin"
7373
alert(*!*user.name*/!*); // 'Pete', los cambios se ven desde la referencia "user"
7474
```
7575
76-
7776
Es como si tuviéramos un gabinete con dos llaves y usáramos una de ellas (`admin`) para acceder a él. Si más tarde usamos la llave (`user`), podemos ver los cambios.
7877
7978
## Comparación por referencia
@@ -230,6 +229,30 @@ Para corregir esto, debemos usar un bucle de clonación que examine cada valor d
230229
231230
Podemos usar recursividad para implementarlo. O, para no inventar la rueda, tomar una implementación existente, por ejemplo [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) de la librería JavaScript [lodash](https://lodash.com).
232231
232+
````smart header="Los objetos con const pueden cambiarse"
233+
Un efecto secundario importante de almacentar objetos como referencias es que un objeto declarado con `const` *puede* ser modificado.
234+
235+
Por ejemplo:
236+
237+
```js run
238+
const user = {
239+
name: "John"
240+
};
241+
242+
*!*
243+
user.name = "Pete"; // (*)
244+
*/!*
245+
246+
alert(user.name); // Pete
247+
```
248+
249+
Puede parecer que la linea `(*)` ocasionaría un error, pero no. El valor de `user` es constante, debe siempre hacer referencia al mismo objeto. Pero sus propiedades pueden cambiar libremente.
250+
251+
En otras palabras, `const user` solamente da error cuando intentamos asignar `user=...` como un todo.
252+
253+
Si realmente queremos hacer constantes las propiedades del objeto, es también posible pero usando métodos totalmente diferentes, las veremos después en el capítulo <info:property-descriptors>.
254+
````
255+
233256
## Resumen
234257

235258
Los objetos son asignados y copiados por referencia. En otras palabras, una variable almacena no el valor del objeto sino una referencia (dirección de memoria) del valor. Entoncess copiar tal variable o pasarla como argumento de función copia la referencia, no el objeto.

2-ui/4-forms-controls/3-events-change-input/article.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,13 @@ Por ejemplo, el siguiente código evita tales eventos y muestra qué es los que
7676

7777
Por favor ten en cuenta que no solo es posible copiar/pegar texto, sino cualquier cosa. Por ejemplo, podemos copiar un archivo en el gestor de archivos del SO y pegarlo.
7878

79-
Hay una lista de métodos [en la especificación](https://www.w3.org/TR/clipboard-apis/#dfn-datatransfer) que puede funcionar con diferentes tipos de datos incluyendo archivos, leer/escribir del portapapeles.
79+
Esto es porque `clipboardData` implementa la interfaz `DataTransfer`, usada comúnmente para "arrastrar y soltar" y "copiar y pegar". Ahora esto está fuera de nuestro objetivo, pero puedes encontrar sus métodos [en la especificación](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
8080

81-
Pero ten en cuenta que el portapapeles es algo a nivel "global" del SO. La mayoría de los navegadores dan acceso a leer/escribir del portapapeles dentro del alcance del usuario por cuestiones de seguridad, e.g. al manejar eventos `onclick`.
81+
```warn header="ClipboardAPI: restricciones para seguridad del usuario"
82+
El portapapeles es algo a nivel "global" del SO. Por cuestiones de seguridad, la mayoría de los navegadores dan acceso al portapapeles solamente bajo determinadas acciones del usuario, por ejemplo al manejar eventos `onclick`.
8283
8384
Además está prohibido generar eventos "personalizados" del portapapeles con `dispatchEvent` en todos los navegadores excepto Firefox.
85+
```
8486

8587
## Resumen
8688

2-ui/5-loading/01-onload-ondomcontentloaded/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ let analyticsData = { /* objeto con datos recopilados */ };
145145

146146
window.addEventListener("unload", function() {
147147
navigator.sendBeacon("/analytics", JSON.stringify(analyticsData));
148-
};
148+
});
149149
```
150150

151151
- La solicitud se envía como POST.

2-ui/5-loading/02-script-async-defer/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ El atributo `async` significa que el script es completamente independiente:
103103
- `DOMContentLoaded` puede suceder antes que un script asincrónico (si un script asincrónico termina de cargar una vez la página está completa)
104104
- ...o después de un script asincrónico (si tal script asincrónico es pequeño o está en cache)
105105
106-
En otras palabras, los scripts `async` cargan en segundo plano y se ejecutan cuando están listos. El DOM y otros scripts no esperan por ellos, y ellos no esperan por nada. Un totalmente independiente script que se ejecuta en cuanto se ha cargado. Tan simple como es posible, ¿cierto?
106+
En otras palabras, los scripts `async` cargan en segundo plano y se ejecutan cuando están listos. El DOM y otros scripts no esperan por ellos, y ellos no esperan por nada. Un script totalmente independiente que se ejecuta en cuanto se ha cargado. Tan simple como es posible, ¿cierto?
107107
108108
Aquí hay un ejemplo similar al que vimos con `defer`: Dos scripts `long.js` y `small.js`, pero ahora con `async` en lugar de `defer`.
109109

0 commit comments

Comments
 (0)