Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OOP, or Object Oriented Programming, is one of the major approaches to the software
development process. In OOP, objects and classes organize code to describe things and
what they can do.
In this course, you'll learn the basic principles of OOP in JavaScript, including the this
keyword, prototype chains, constructors, and inheritance.
Se utiliza notación de puntos con el nombre del objeto, duck, seguido por el nombre de la
propiedad, name, para acceder al valor de Aflac.
cardinal.name
cardinal.color
cardinal.numLegs
El constructor es más flexible. Ahora es posible definir las propiedades para cada Bird en
el momento que se crea. Esta es una manera en que los constructores de JavaScript son
tan útiles. Estos agrupan objetos basados en características y comportamiento
compartidos, y definen un plano que automatiza su creación.
Crea otro constructor Dog. Esta vez, configúralo para que tome los parámetros name y
color, y ten la propiedad numLegs fija a 4. Luego crea un nuevo Dog almacenado en una
variable terrier. Pasale dos cadenas de texto como argumentos para las propiedades
name y color.
console.log(ownProps);
console.log(prototypeProps);
console.log(ownProps) debe mostrar ["name"] en la consola, y
console.log(prototypeProps) debe mostrar ["numLegs"].
function Bird(name) {
this.name = name;
}
let duck = new Bird("Donald");
duck hereda su prototype de la función constructor Bird. Puedes mostrar esta relación con
el método isPrototypeOf:
Bird.prototype.isPrototypeOf(duck);
Este devolvería true.
Bird.prototype = {
constructor: Bird
};
Dog.prototype = {
constructor: Dog
};
Hereda comportamientos de un supertipo (supertype)
En el desafío anterior, creaste un supertype llamado Animal que definía comportamientos
compartidos por todos los animales:
function Animal() { }
Animal.prototype.eat = function() {
console.log("nom nom nom");
};
Este desafío y el siguiente cubrirán como reutilizar los métodos de Animal dentro de Bird y
Dog sin tener que definirlos otra vez. Se utiliza una técnica llamada herencia. Este desafío
cubre el primer paso: crear una instancia del supertype (o objecto padre). Ya conoces una
forma de crear una instancia de Animal utilizando el operador new:
let animal = new Animal();
Hay algunas desventajas cuando se utiliza esta sintaxis para la herencia, pero son
demasiado complejas para el alcance de este desafío. En su lugar, hay un enfoque
alternativo que no tiene esas desventajas:
let animal = Object.create(Animal.prototype);
Object.create(obj) crea un objeto nuevo y establece obj como el prototype del nuevo
objeto. Recuerda que prototype es como la "receta" para crear un objecto. Al establecer el
prototype de animal como el prototype de Animal, estás dándole a la instancia animal la
misma “receta" que a cualquier otra instancia de Animal.
animal.eat();
animal instanceof Animal;
Aquí el método instanceof devolvería true.
Este desafío cubre el siguiente paso: establecer el prototipo prototype del subtipo (o hijo)
—en este caso, Bird— para ser una instancia de Animal.
Bird.prototype = Object.create(Animal.prototype);
Recuerda que el prototipo prototype es como la "receta" para crear un objeto. En cierto
modo, la receta de Bird ahora incluye todos los "ingredientes" clave de Animal.
Bird.prototype.fly = function() {
console.log("I'm flying!");
};
Ahora las instancias de Bird tendrán métodos tanto eat() como fly():
let duck = new Bird();
duck.eat();
duck.fly();
duck.eat() mostrará la cadena nom nom nom en consola, y duck.fly() mostrará la cadena
I'm flying!.
flyMixin(bird);
flyMixin(plane);
Aquí bird y plane son pasados a flyMixin el cual después asigna la función fly a cada
objeto. Ahora bird y plane pueden volar:
bird.fly();
plane.fly();
La consola mostraría la cadena Flying, wooosh! dos veces, una por cada llamada a .fly().
Ten en cuenta cómo el mixin permite que el mismo método fly sea reutilizado por los
objetos bird y plane los cuales no están relacionados.
Utiliza closures para evitar que las propiedades de un objeto se puedan modificar
desde fuera
En el desafío anterior, bird tenía una propiedad pública name. Se considera pública
porque se puede acceder y cambiar fuera de la definición de bird.
bird.name = "Duffy";
Por lo tanto, cualquier parte de tu código puede cambiar fácilmente el nombre "name" de
bird a cualquier valor. Piensa en cosas como contraseñas y cuentas bancarias que se
pueden cambiar fácilmente por cualquier parte de tu base de código. Eso podría crear
muchos problemas.
La forma más sencilla de hacer privada esta propiedad pública es creando una variable
dentro de la función constructora. Esto cambia el alcance de esa variable para que esté
dentro de la función constructora versus disponible globalmente. De este modo, la
variable solo puede ser accesible y cambiable por métodos que también estén dentro de
la función constructora.
function Bird() {
let hatchedEgg = 10;
this.getHatchedEggCount = function() {
return hatchedEgg;
};
}
let ducky = new Bird();
ducky.getHatchedEggCount();
Aquí getHatchedEggCount es un método privilegiado, porque tiene acceso a la variable
privada hatchedEgg. Esto es posible porque hatchedEgg está declarada en el mismo
contexto que getHatchedEggCount. En JavaScript, una función siempre tiene acceso al
contexto en el que se creó. A esto se le llama closure.
Vamos a asegurarnos de que todos sepan que no deben modificar nada de este código
directamente.
Recuerda que puedes empezar un comentario con <!-- y terminarlo con -->
Agrega un comentario en la parte superior de tu HTML que diga Code below this line
should not be changed
jQuery
jQuery is one of the most widely used JavaScript libraries in the world.
In 2006 when it was released, all major browsers handled JavaScript slightly differently.
jQuery simplified the process of writing client-side JavaScript, and also ensured that your
code worked the same way in all browsers.
In this course, you'll learn how to use jQuery to select, remove, clone, and modify different
elements on the page.
Ahora vamos a escribir nuestra primera declaración de jQuery. Todas las funciones de
jQuery comienzan con un $, usualmente conocido como un operador de signo de dólares.
jQuery a menudo selecciona un elemento HTML con un selector, y luego le hace algo a
ese elemento.
Por ejemplo, hagamos que todos tus elementos button reboten. Simplemente agrega este
código dentro de tu función document ready:
$("button").addClass("animated bounce");
Ten en cuenta que ya hemos incluido tanto la librería jQuery como la librería Animate.css
en segundo plano para que puedas usarlos en el editor. Así que estás usando jQuery para
aplicar la clase Animate.css bounce a tus elementos button.
SASS
Sass, or "Syntactically Awesome StyleSheets", is a language extension of CSS. It adds
features that aren't available in basic CSS, which make it easier for you to simplify and
maintain the style sheets for your projects.
In this Sass course, you'll learn how to store data in variables, nest CSS, create reusable
styles with mixins, add logic and loops to your styles, and more.