From 57e4f4263f56bfc732dda3f852f3a765e3c9c12b Mon Sep 17 00:00:00 2001 From: Carlos Ortiz Gutierrez Date: Sat, 4 Jul 2020 19:10:40 -0600 Subject: [PATCH] Updated: Corregir 1 8 3 Native prototypes (@cortizg) #291 typo --- .../2-defer-to-prototype-extended/solution.md | 28 ++----------------- .../03-native-prototypes/article.md | 5 ++-- 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md b/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md index 843c14749..c5be96679 100644 --- a/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md +++ b/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md @@ -8,12 +8,12 @@ Function.prototype.defer = function(ms) { } }; -// revisalo +// revísalo function f(a, b) { alert( a + b ); } -f.defer(1000)(1, 2); // muestra 3 despues de 1 seg +f.defer(1000)(1, 2); // muestra 3 después de 1 seg ``` Tenga en cuenta: utilizamos `this` en `f.apply` para que nuestro decorado funcione para los métodos de objetos. @@ -39,27 +39,3 @@ user.sayHi = user.sayHi.defer(1000); user.sayHi(); ``` - -Please note: we use `this` in `f.apply` to make our decoration work for object methods. - -So if the wrapper function is called as an object method, then `this` is passed to the original method `f`. - -```js run -Function.prototype.defer = function(ms) { - let f = this; - return function(...args) { - setTimeout(() => f.apply(this, args), ms); - } -}; - -let user = { - name: "John", - sayHi() { - alert(this.name); - } -} - -user.sayHi = user.sayHi.defer(1000); - -user.sayHi(); -``` diff --git a/1-js/08-prototypes/03-native-prototypes/article.md b/1-js/08-prototypes/03-native-prototypes/article.md index 2e0ac7449..5348ad51b 100644 --- a/1-js/08-prototypes/03-native-prototypes/article.md +++ b/1-js/08-prototypes/03-native-prototypes/article.md @@ -13,7 +13,7 @@ let obj = {}; alert( obj ); // "[object Object]" ? ``` -¿Dónde está el código que genera la cadena `"[objeto Objeto]"`? Ese es un método integrado `toString`, pero ¿dónde está? ¡El `obj` está vacío! +¿Dónde está el código que genera la cadena `"[objetc Objetc]"`? Ese es un método integrado `toString`, pero ¿dónde está? ¡El `obj` está vacío! ...Pero la notación corta `obj = {}` es la misma que `obj = new Object()`, donde `Object` es una función de constructor de objeto integrado, con su propio `prototype` que hace referencia a un objeto enorme con `toString` y otros métodos @@ -145,7 +145,7 @@ if (!String.prototype.repeat) { // si no hay tal método // en realidad, el código debería ser un poco más complejo que eso // (el algoritmo completo está en la especificación) - // pero incluso un polirelleno imperfecto a menudo se considera lo suficientemente bueno + // pero incluso un polyfill (polirelleno) imperfecto a menudo se considera lo suficientemente bueno return new Array(n + 1).join(this); }; } @@ -179,6 +179,7 @@ obj.join = Array.prototype.join; alert( obj.join(',') ); // Hola,mundo! ``` + Funciona porque el algoritmo interno del método integrado `join` solo se preocupa por los índices correctos y la propiedad `length`. No comprueba si el objeto es realmente un arreglo. Muchos métodos integrados son así. Otra posibilidad es heredar estableciendo `obj.__proto__` en `Array.prototype`, de modo que todos los métodos `Array` estén disponibles automáticamente en `obj`. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy