Merge pull request #4768 from vtamara/add/ES-translation-object-oriente-and-functional-programming

Indenting and adding spanish translation of Object Oriented and Functional Programming.
This commit is contained in:
Arsen Melikyan
2015-12-03 06:03:34 +04:00

View File

@ -48,7 +48,12 @@
"var car = {\n \"wheels\":4,\n \"engines\":1,\n \"seats\":5\n};\n\nvar motorBike = {\n \"wheels\": 4,\n \"engines\": 1,\n \"seats\": 2\n};"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Declara objetos de JavaScript como variables",
"descriptionEs": [
"Antes de sumergirnos en Programación Orientada a Objetos, vamos a revisar los objetos de JavaScript.",
"Dale a tu objeto <code>motorBike</code> un atributo <code>wheels</code>, otro llamado <code>motors</code> y otro <code>seats</code> y asignales números."
]
},
{
"id": "cf1111c1c15feddfaeb2bdef",
@ -95,7 +100,23 @@
"var Car = function() {\n this.wheels = 4;\n this.engines = 1;\n this.seats = 1;\n};\n\nvar myCar = new Car();\n\nvar MotorBike = function() {\n this.engines = 1;\n this.seats = 1;\n this.wheels = 4;\n};\n\nvar myMotorBike = new MotorBike();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Construye objetos de JavaScript con funciones",
"descriptionEs": [
"También podemos crear objetos utilizando funciones <code>constructoras</code>.",
"A cada función <code>constructora</code>se le da un nombre comenzando en mayúsculas para que quede claro que es una <code>constructora</code>.",
"He aquí un ejemplo de una función <code>constructora</code>:",
"<code>var Carro = function() {</code>",
"<code>& nbsp; & nbsp; this.llantas = 4; </code>",
"<code>& nbsp; & nbsp; this.motores = 1; </code>",
"<code>& nbsp; & nbsp; this.asientos = 1; </code>",
"<code>}; </code>",
"En una <code>constructora</code> la variable <code>this</code> hace referencia al nuevo objeto que está siendo creado por la constructora. Así que cuando escribimos ",
"<code>&nbsp;&nbsp;this.llantas = 4;</code>",
"dentro de la <code>constructora</code> le estamos dando el nuevo objeto que se crea una propiedad llamada <code>llantas</code> con un valor de <code>4</code>.",
"Puedes pensar en una <code>constructora</code> como una descripción del objeto que crea.",
"Haz que tu <code>constructora</code> <code>MotorBike</code> describa un objeto con las propiedades <code>wheels</code>,<code>engines</code> and <code>seats</code> y asignales números."
]
},
{
"id": "cf1111c1c15feddfaeb4bdef",
@ -141,7 +162,25 @@
"var Car = function() {\n this.wheels = 4;\n this.engines = 1;\n this.seats = 1;\n};\n\nvar myCar = new Car();\n\nmyCar.nickname = \"Lucy\";"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Crea instancias de objetos con funciones constructoras",
"descriptionEs": [
"¡Ahora usemos esa gran <code>constructora</code> que hicimos en la última lección!",
"Para utilizar una función <code>constructora</code> la llamamos con la palabra reservada <code>new</code> al frente, como:",
"<code>var miCarro = new Carro();</code>",
"<code>miCarro</code>es ahora una <code>instancia</code> de la constructora <code>Carro</code> que se parece al objeto que describe:",
"<code>{</code>",
"<code>&nbsp;&nbsp;wheels: 4,</code>",
"<code>&nbsp;&nbsp;engines: 1,</code>",
"<code>&nbsp;&nbsp;seats: 1</code>",
"<code>}</code>",
"Tenga en cuenta que es importante utilizar la palabra reservaa <code>new</code> cuando se llama a una constructora. Así es como Javascript sabe crear un objeto nuevo y hace que todas las referencias a <code>this</code> dentro del constructor se refieran al objeto nuevo ",
"Ahora, una vez que la <code>instancia</code> <code>miCarro</code> se crea, puede ser utilizada como cualquier otro objeto y puedes acceder o modificar sus propiedades como lo harías normalmente. Por ejemplo:",
"<code>miCarro.tipoTurbo = \"doble\"; </code>",
"Nuestra variable <code>miCarro</code> tiene ahora una propiedad <code>tipoTurbo</code> con un valor de <code>\"doble\"</code>.",
"En el editor, utiliza la <code>constructora</code> <code>Car</code> para crear una nueva <code>instancia</code> y asignala a <code>myCar</code>.",
"A continuación, dale a <code>myCar</code> una propiedad <code>nickname</code> con un valor tipo cadena."
]
},
{
"id": "563cfb55594311ffcb333c70",
@ -188,7 +227,27 @@
"var Car = function(wheels,seats,engines) {\n this.wheels = wheels;\n this.seats = seats;\n this.engines = engines;\n};\n\nvar myCar = new Car(4,1,1);"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Crea objetos únicos pasando parámetros a la constructora",
"descriptionEs": [
"La <code>constructora</code> que tenemos es fabulosa, pero ¿qué hacer si no queremos crear siempre el mismo objeto?",
"Para solucionar esto podemos añadir<code>parámetros</code>en nuestra <code>constructora</code>. Hacemos esto como en el siguiente ejemplo: ",
"<code>var Carro = function (ruedas, asientos, motores) {</code>",
"<code>&nbsp;&nbsp;this.ruedas = ruedas;</code>",
"<code>&nbsp;&nbsp;this.asientos = asientos;</code>",
"<code>&nbsp;&nbsp;this.motores = motores;</code>",
"<code>};</code>",
"Ahora podemos pasar <code>argumentos</code> cuando llamamos a nuestra <code>constructora</code>.",
"<code>var miCarro = nuevo Carro(6, 3, 1); </code>",
"Este código crea un objeto que utiliza los <code>argumentos</code> que pasamos en y se ve así:",
"<code>{</code>",
"<code>&nbsp;&nbsp;ruedas: 6,</code>",
"<code>&nbsp;&nbsp;asientos: 3,</code>",
"<code>&nbsp;&nbsp;motores: 1</code>",
"<code>}</code>",
"¡Ahora date una oportunidad a ti mismo! Modifica la <code>constructora</code> <code>Car</code> para que use <code>parámetros</code> que permitan asignar valores para las propiedades <code>wheels</code>, <code>seats</code>, y <code>engines</code>. ",
"Entonces llama a tu nueva <code>constructora</code> con tres <code>argumentos</code> numéricos y asígnala a <code>myCar</code>para verla en acción."
]
},
{
"id": "cf1111c1c15feddfaeb3bdef",
@ -247,7 +306,18 @@
"var Car = function() {\n var speed = 10;\n\n this.accelerate = function(change) {\n speed += change;\n };\n\n this.decelerate = function() {\n speed -= 5;\n };\n\n this.getSpeed = function() {\n return speed;\n };\n};\n\nvar Bike = function() {\n var gear = 1;\n \n this.getGear = function() {\n return gear;\n };\n \n this.setGear = function(newGear) {\n gear = newGear;\n };\n};\n\nvar myCar = new Car();\n\nvar myBike = new Bike();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Crea propiedades privadas de un objeto",
"descriptionEs": [
"Los objetos tienen sus propios atributos, llamados <code>propiedades</code>, y sus propias funciones, llamadas<code>métodos</code>.",
"En los desafíos anteriores, se utilizó la palabra reservada <code>this</code> para referenciar <code>propiedades públicas</code>del objeto actual.",
"También podemos crear <code>propiedades privadas</code> y <code>métodos privados</code>, que no son accesibles desde fuera del objeto.",
"Para ello, creamos la variable dentro de la <code>constructora</code> usando la palabra reservada <code>var</code>, con la cual ya estamos familiarizados, en lugar de crearla con <code>this</code>. ",
"Esto es útil cuando necesitamos almacenar información sobre un objeto, pero controlando como se usa en el código externo al objeto.",
"Por ejemplo, ¿qué pasa si queremos almacenar la <code>velocidad</code> con la cual se desplaza nuestro carro, pero queremos que el código externo pueda modificarla sólo acelerando o desacelerando, de forma que la velocidad cambie de una manera controlada?",
"En el editor se puede ver un ejemplo de una <code>constructora</code> de <code>Car</code> que implementa este patrón.",
"¡Ahora pruébalo tú mismo! Modifica la <code>constructora</code> <code>Bike</code> para tener una <code>propiedad privada</code> llamada <code>gear</code>y dos<code>métodos públicos</code> llamados <code>getGear</code>y<code>setGear</code> para obtener y establecer ese valor."
]
},
{
"id": "cf1111c1c15feddfaeb7bdef",
@ -279,7 +349,18 @@
"(function() {return newArray;})();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Iterar sobre vectores con .map",
"descriptionEs": [
"El método <code>map</code> es una manera conveniente de iterar sobre vectores. He aquí un ejemplo de uso: ",
"<code>var porCuatro = vectorAntiguo.map(function(val){</code>",
"<code>&nbsp;&nbsp;return val * 4;</code>",
"<code>});</code>",
"",
"El método <code>map</code> iterará sobre cada elemento del vector, creando un nuevo vector con los valores modificados por la función de devolución de llamada (<em>callback</em>) y retornará ese nuevo arreglo.",
"En nuestro ejemplo, la función de devolución de llamada sólo usa el valor del elemento del vector sobre el que está iterando (parámetro <code>val</code>), pero tu función de devolución de llamada también puede incluir parámetros para el <code>índice</code> y el <code>vector</code> completo. ",
"Usa la función <code>map</code> para añadir 3 a cada valor de la variable <code>oldArray</code>."
]
},
{
"id": "cf1111c1c15feddfaeb8bdef",
@ -310,7 +391,18 @@
"(function() {return singleVal;})();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Condensa vectores con .reduce",
"descriptionEs": [
"El método <code>reduce</code> de un vector, se utiliza para iterar a través del vector y condensarlo en un valor.",
"Para usar <code>reduce</code> tu le pasas una función de devolución de llamada cuyos argumentos sean un acumulador (en este caso, <code>valorPrevio</code>) y el valor actual (<code>valorActual</code>). ",
"<code>reduce</code> tiene un argumento opcional que puede usarse para asignar un valor inicial al acumulador. Si no se especifica ningún valor inicial será el primer elemento del vector y <code>valorActual</code> comenzará en el segundo elemento del vector. ",
"He aquí un ejemplo de<code>reduce</code> cuando se utiliza para restar todos los valores de una matriz:",
"<code>var singleVal = array.reduce(function(valorAnterior, valorActual) {</code>",
"<code>&nbsp;&nbsp;return valorAnterior - valorActual;</code>",
"<code>}, 0);</code>",
"Usa el método <code>reduce</code> para sumar todos los valores en <code>array</code> y asignarlo a <code>singleVal</code>."
]
},
{
"id": "cf1111c1c15feddfaeb9bdef",
@ -343,7 +435,19 @@
"(function() { return newArray; })();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Filtrar vectores con .filter",
"descriptionEs": [
"El método <code>filter</code> se utiliza para iterar a través de un vector y filtrar los elementos que hagan falsa un condición determinada.",
"<code>filter</code> recibe una función de devolución de llamada que a su vez recibe como argumento el valor actual (que hemos llamado que<code>val </code>).",
"Cualquier elemento del vector para el cual la función de devolución de llamada retorne <code>true</code> se mantendrá y los elementos que devuelven <code>false</code> serán filtrados.",
"El código siguiente es un ejemplo del uso del <code>filter</code> para eliminar los elementos de un vector que no sean números pares:",
"Nota: Omitimos el segundo y tercer argumentos ya que sólo necesitamos el valor",
"<code>array = array.filter(function(val) {</code>",
"<code>&nbsp;&nbsp;return val % 2 === 0;</code>",
"<code>});</code>",
"Usa <code>filter</code> para eliminar todos los elementos de <code>array</code>que sean mayores que 5."
]
},
{
"id": "cf1111c1c16feddfaeb1bdef",
@ -376,7 +480,19 @@
"(function() { return array; })();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Ordena vectores con .sort",
"descriptionEs": [
"Puedes utilizar el método <code>sort</code> para ordenar alfabética o numéricamente los valores de un vector.",
"A diferencia de los métodos de vector que hemos visto,<code>sort</code>en realidad altera el vector en su lugar. Sin embargo, también devuelve este vector ordenado. ",
"<code>sort</code> puede recibir como parámetro una función de devolución de llamada para comparar. Sin no se provee una función de comparación, convertirá los valores a cadenas y los ordenará alfabéticamente. ",
"He aquí un ejemplo del uso de <code>sort</code> con una función de comparación que ordena los elementos de menor a mayor:",
"<code>var array = [1, 12, 21, 2];</code>",
"<code>array.sort(function(a, b) {</code>",
"<code>&nbsp;&nbsp;return a - b;</code>",
"<code>});</code>",
"Usa <code>sort</code> para ordenar<code>array</code> de mayor a menor."
]
},
{
"id": "cf1111c1c16feddfaeb2bdef",
@ -405,7 +521,13 @@
"(function() {return newArray;})();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Invierte vectores con .reverse",
"descriptionEs": [
"Puedes utilizar el método <code>reverse</code> para invertir los elementos en un vector.",
"<code>reverse</code> es otro método de vector que altera el vector mismo, y también devuelve el vector invertido.",
"Usa <code>reverse</code> para invertir la variable <code>array</code> y asignarla a <code>newArray</code>."
]
},
{
"id": "cf1111c1c16feddfaeb3bdef",
@ -436,7 +558,15 @@
"(function() { return newArray; })();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Concatena vectores con .concat",
"descriptionEs": [
"<code>concat</code> se puede utilizar para combinar el contenido de dos vectores en uno solo.",
"<code>concat</code> recibe un vector como argumento y devuelve un nuevo vector con los elementos del vector que recibe concatenados al final.",
"He aquí un ejemplo de <code>concat</code> cuando se usa para concatenar <code>otroVector</code> al final de <code>vectorAntiguo</code>:",
"<code>vectorNuevo = vectorAntiguo.concat(otroVector);</code>",
"Usa <code>.concat ()</code> para concatenar <code>concatMe</code> al final de <code>oldArray</code>y asigna el vector resultante a <code>newArray</code>."
]
},
{
"id": "cf1111c1c16feddfaeb4bdef",
@ -464,7 +594,15 @@
"(function() {return array;})();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Divide cadenas con .split",
"descriptionEs": [
"Puedes utilizar el método <code>split</code> para dividir una cadena en un vector.",
"<code>split</code> utiliza el argumento que recibe como delimitador para determinar en qué puntos debe dividir la cadena.",
"He aquí un ejemplo del uso de <code>split</code> para dividir una cadena en cada caracter <code>s</code>:",
"<code>var vector = string.split('s');</code>",
"Usa <code>split</code> para crear un vector con las palabras de una <code>cadena</code> y asígnalo a la variable <code>array</code>."
]
},
{
"id": "cf1111c1c16feddfaeb5bdef",
@ -493,7 +631,16 @@
"(function() {return joinedString;})();"
],
"challengeType": 1,
"type": "waypoint"
"type": "waypoint",
"nameEs": "Une cadenas con .join",
"descriptionEs": [
"Podemos usar el método <code>join</code> para unir los elementos de un vector en una cadena, separandolos con el delimitador que proporciones como argumento.",
"El siguiente es un ejemplo del uso de <code>join</code> para unir todos los elementos de un vector en una cadena con todos los elementos separados entre si por palabra` Na`: ",
"<code>var uneme = [\"Na \", \"Na \", \"Na \", \"Na \", \"Batman!\"];</code>",
"<code>var cadenaUnida = uneme.join(\"Na \");</code>",
"<code>console.log(cadenaUnida);</code>",
"Usa el método <code>join</code> para crear una cadena a partir <code>joinMe</code> con espacios entre cada par de elementos y asignarla a <code>joinedString </code>."
]
}
]
}