Desafí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.
- Definir una Propiedad Estática:
- En la clase
Product, crea una propiedad estáticatotalProductsinicializada en0; - Cada vez que se cree una nueva instancia de
Product, incrementatotalProductsen 1 para llevar el control de cuántos productos se han añadido al inventario.
- En la clase
- Definir un Método Estático: Define un método estático
comparePrices(product1, product2)que reciba dos instancias deProductcomo parámetros y retorne:"Product 1 is more expensive"siproduct1tiene un precio mayor;"Product 2 is more expensive"siproduct2tiene un precio mayor;"Both products have the same price"si ambos tienen el mismo precio.
12345678910111213141516171819202122232425262728293031class 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
- Definir una propiedad estática llamada
totalProductse inicializarla en0; - En el constructor, incrementar
Product.totalProductsen 1 cada vez que se cree una nueva instancia deProduct; - Definir un método estático
comparePrices(product1, product2)que reciba dos parámetros:product1yproduct2; - En
comparePrices, utilizar una sentenciaifpara comprobar siproduct1.pricees mayor queproduct2.price. Si es cierto, retornar"Product 1 is more expensive"; - Utilizar una sentencia
else ifpara comprobar siproduct1.pricees menor queproduct2.price. Si es cierto, retornar"Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031class 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
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Desafí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.
- Definir una Propiedad Estática:
- En la clase
Product, crea una propiedad estáticatotalProductsinicializada en0; - Cada vez que se cree una nueva instancia de
Product, incrementatotalProductsen 1 para llevar el control de cuántos productos se han añadido al inventario.
- En la clase
- Definir un Método Estático: Define un método estático
comparePrices(product1, product2)que reciba dos instancias deProductcomo parámetros y retorne:"Product 1 is more expensive"siproduct1tiene un precio mayor;"Product 2 is more expensive"siproduct2tiene un precio mayor;"Both products have the same price"si ambos tienen el mismo precio.
12345678910111213141516171819202122232425262728293031class 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
- Definir una propiedad estática llamada
totalProductse inicializarla en0; - En el constructor, incrementar
Product.totalProductsen 1 cada vez que se cree una nueva instancia deProduct; - Definir un método estático
comparePrices(product1, product2)que reciba dos parámetros:product1yproduct2; - En
comparePrices, utilizar una sentenciaifpara comprobar siproduct1.pricees mayor queproduct2.price. Si es cierto, retornar"Product 1 is more expensive"; - Utilizar una sentencia
else ifpara comprobar siproduct1.pricees menor queproduct2.price. Si es cierto, retornar"Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031class 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
¡Gracias por tus comentarios!