Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Implementar Propiedades y Métodos Estáticos en una Clase | Dominio de las Clases e Herencia en JavaScript
Maestría Avanzada en JavaScript

bookDesafío: Implementar Propiedades y Métodos Estáticos en una Clase

Desafío

Imagina que estás desarrollando un sistema de gestión de inventario para una tienda en línea. La clase Product necesita llevar un registro del número total de productos añadidos al inventario, así como proporcionar funcionalidad para comparar los precios de dos productos.

  1. Definir una Propiedad Estática:
    • En la clase Product, crea una propiedad estática totalProducts inicializada en 0;
    • Cada vez que se cree una nueva instancia de Product, incrementa totalProducts en 1 para llevar el control de cuántos productos se han añadido al inventario.
  2. Definir un Método Estático: Define un método estático comparePrices(product1, product2) que reciba dos instancias de Product como parámetros y retorne:
    • "Product 1 is more expensive" si product1 tiene un precio mayor;
    • "Product 2 is more expensive" si product2 tiene un precio mayor;
    • "Both products have the same price" si ambos tienen el mismo precio.
12345678910111213141516171819202122232425262728293031
class Product { _____ _____ = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product._____+=1; // Increment totalProducts } // Static method to compare prices _____ comparePrices(product1, product2) { if (product1.price > product2.price) { return _____; } else if (_____ < _____) { return _____; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Expected: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Expected: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Expected: Product 2 is more expensive console.log(Product.totalProducts); // Expected: 3
copy
  • Definir una propiedad estática llamada totalProducts e inicializarla en 0;
  • En el constructor, incrementar Product.totalProducts en 1 cada vez que se cree una nueva instancia de Product;
  • Definir un método estático comparePrices(product1, product2) que reciba dos parámetros: product1 y product2;
  • En comparePrices, utilizar una sentencia if para comprobar si product1.price es mayor que product2.price. Si es cierto, retornar "Product 1 is more expensive";
  • Utilizar una sentencia else if para comprobar si product1.price es menor que product2.price. Si es cierto, retornar "Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031
class Product { static totalProducts = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product.totalProducts+=1; // Increment totalProducts } // Static method to compare prices static comparePrices(product1, product2) { if (product1.price > product2.price) { return 'Product 1 is more expensive'; } else if (product1.price < product2.price) { return 'Product 2 is more expensive'; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Output: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Output: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Output: Product 2 is more expensive console.log(Product.totalProducts); // Output: 3
copy

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 13

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain how static properties and methods work in JavaScript?

What would happen if I created more Product instances?

Can you show how to add more features to the Product class?

Awesome!

Completion rate improved to 2.22

bookDesafío: Implementar Propiedades y Métodos Estáticos en una Clase

Desliza para mostrar el menú

Desafío

Imagina que estás desarrollando un sistema de gestión de inventario para una tienda en línea. La clase Product necesita llevar un registro del número total de productos añadidos al inventario, así como proporcionar funcionalidad para comparar los precios de dos productos.

  1. Definir una Propiedad Estática:
    • En la clase Product, crea una propiedad estática totalProducts inicializada en 0;
    • Cada vez que se cree una nueva instancia de Product, incrementa totalProducts en 1 para llevar el control de cuántos productos se han añadido al inventario.
  2. Definir un Método Estático: Define un método estático comparePrices(product1, product2) que reciba dos instancias de Product como parámetros y retorne:
    • "Product 1 is more expensive" si product1 tiene un precio mayor;
    • "Product 2 is more expensive" si product2 tiene un precio mayor;
    • "Both products have the same price" si ambos tienen el mismo precio.
12345678910111213141516171819202122232425262728293031
class Product { _____ _____ = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product._____+=1; // Increment totalProducts } // Static method to compare prices _____ comparePrices(product1, product2) { if (product1.price > product2.price) { return _____; } else if (_____ < _____) { return _____; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Expected: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Expected: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Expected: Product 2 is more expensive console.log(Product.totalProducts); // Expected: 3
copy
  • Definir una propiedad estática llamada totalProducts e inicializarla en 0;
  • En el constructor, incrementar Product.totalProducts en 1 cada vez que se cree una nueva instancia de Product;
  • Definir un método estático comparePrices(product1, product2) que reciba dos parámetros: product1 y product2;
  • En comparePrices, utilizar una sentencia if para comprobar si product1.price es mayor que product2.price. Si es cierto, retornar "Product 1 is more expensive";
  • Utilizar una sentencia else if para comprobar si product1.price es menor que product2.price. Si es cierto, retornar "Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031
class Product { static totalProducts = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product.totalProducts+=1; // Increment totalProducts } // Static method to compare prices static comparePrices(product1, product2) { if (product1.price > product2.price) { return 'Product 1 is more expensive'; } else if (product1.price < product2.price) { return 'Product 2 is more expensive'; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Output: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Output: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Output: Product 2 is more expensive console.log(Product.totalProducts); // Output: 3
copy

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 13
some-alt