Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

258
Views
¿Cómo mostrar un objeto en la consola con javascript como este?

Tengo Definir un objeto prototipo "Animal" con:

2 propiedades: nombre, edad y 1 función: sonido, necesito crear los siguientes objetos que se extienden desde "Animal": Vaca, Oveja, Gato (puedo usar cualquier nombre y edad), luego anulo la función "sonido" para representar cada sonido específico de cada animal por ejemplo:

  • La vaca tiene el sonido "mooo"
  • Oveja tiene el sonido "abeja" sonido de oveja
  • Gato tiene el sonido "miau"

Tengo que usar console.log para imprimir el siguiente resultado:

Nombre y Edad de cada tipo de animal y el sonido de cada tipo de animal

Ya compuse esto:

 const Animal = { Cow: { name: "Peppa", age: 12, sound: function cowSound() { alert("Moo!"); } }, Sheep: { name: "Shirley", age: 7, sound: function sheepSound() { alert("Baa!"); } }, Cat: { name: "Felipe", age: 3, sound: function catSound() { alert("Meow!"); } }, }; console.log(JSON.stringify(Animal))

Pero el resultado es este: "{"Vaca":{"nombre":"Peppa","edad":12},"Oveja":{"nombre":"Shirley"," edad":7},"Gato":{"nombre":"Felipe","edad":8}}"

Lo cual es bastante feo, debo admitir

¿Cómo puedo mostrar la forma en que lo necesito con JSON Stringify y ver por qué el sonido no se muestra aquí? Gracias de antemano.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Usando el patrón OLOO

Puede usar el patrón OLOO (Objeto vinculado a otros objetos) para lograr la herencia usando el método Object.create .

 const Animal = { init: function(name, sound) { this.name = name; this.sound = sound; }, makeSound: function() { console.log(`${this.name} has the sound "${this.sound}"`); }, }; // inheritance via Object.create const Cow = Object.create(Animal); const Sheep = Object.create(Animal); const Cat = Object.create(Animal); // any other methods specific to Cat Cat.purr = function() { conslo.log(`${this.name} "purrs"`); }; const animals = []; // initializing objects var cow = Object.create(Cow); cow.init("Cow", "moop"); animals.push(cow); var sheep = Object.create(Sheep); sheep.init("Sheep", "bee"); animals.push(sheep); var cat = Object.create(Cat); cat.init("Cat", "meow"); animals.push(cat); // printing animals.forEach((animal) => { animal.makeSound(); });

Uso de encadenamiento de prototipos

Javascript no tiene clases en realidad, solo tiene funciones. La sintaxis de la clase ES6 se transpila en prototipos de funciones encadenadas como se muestra a continuación. @oerol ha proporcionado una respuesta usando clases JS.

Lea Herencia y la cadena de prototipos

 function Animal(name, sound) { this.name = name; this.sound = sound; } Animal.prototype.makeSound = function() { console.log(`${this.name} has the sound "${this.sound}"`); }; // inheritance via prototype chaining function Cow(name, sound) { Animal.call(this, name, sound); } Cow.prototype = Object.create(Animal.prototype); function Sheep(name, sound) { Animal.call(this, name, sound); } Sheep.prototype = Object.create(Animal.prototype); function Cat(name, sound) { Animal.call(this, name, sound); } Cat.prototype = Object.create(Animal.prototype); Cat.prototype.purr = function() { conslo.log(`${this.name} "purrs"`); }; // initializing new objects const animals = [] var cow = new Cow("Cow", "mooo"); animals.push(cow) var sheep = new Sheep("Sheep", "bee"); animals.push(sheep) var cat = new Sheep("Cat", "meow"); animals.push(cat) // printing animals.forEach((animal) => { animal.makeSound(); });

about 4 years ago · Santiago Trujillo Report

0

Puedes hacer console.log(Animal) si quieres que sea más legible. Sin embargo, como señaló @Barmar, esa no es la forma correcta de instanciar una clase. Un enfoque más adecuado sería:

 class Animal { constructor(name, age) { this.name = name; this.age = age; } sound() { alert("Make Sound"); } } class Cow extends Animal { sound() { alert("Moo!"); } } class Sheep extends Animal { sound() { alert("Meh!"); } } class Cat extends Animal { sound() { alert("Miau!"); } } let cow = new Cow("Peppa", 12) // Create a new object cow.sound() // "Moo!" console.log(cow) // Cow { name: 'Peppa', age: 12 }

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!