es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Template literales en métodos en objetos JavaScript.

Tengo un problema al intentar utilizar console.log con un literal de plantilla. Como se puede ver a continuación, tengo un objeto simple de samsung que tiene un método donde se enciende e imprime el literal de plantilla en la consola.

let samsung = {
  model: "S21",
  camera: "48px",
  processor: "Snapdragon888",
  turnOn: function(model, camera, processor) {
    console.log(
      `¡Me he encendido! Soy el ${model}, tengo una cámara de ${camera} y un procesador ${processor}`
    );
  },
};
console.log(samsung.turnOn());

He intentado de diferentes formas, utilizando funciones de flechas, utilizando el operador “this”, agregando/eliminando parámetros de la función, colocando “Samsung” en lugar de “this”, etc. Pero siempre imprime lo siguiente: ¡Me he encendido! Soy el ${model}, tengo una cámara de ${camera} y un procesador ${processor}.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que al llamar a la función samsung.turnOn(), el método ya contiene los parámetros model, camera y processor. Por lo tanto, al pasar argumentos al llamar al método, es redundante e innecesario.

    Para llamar correctamente al método y mostrar la plantilla literal en la consola, el código correcto sería:

    let samsung = {
      model: "S21",
      camera: "48px",
      processor: "Snapdragon888",
      turnOn: function() {
        console.log(
          `¡Me he encendido! Soy el ${this.model}, tengo una cámara ${this.camera} y un procesador ${this.processor}`
        );
      },
    };
    samsung.turnOn();
    

    Como puedes ver, el método turnOn() no tiene ningún parámetro y en su lugar utiliza la palabra clave this para referirse a las propiedades del objeto samsung.

    Al llamar a samsung.turnOn(), se mostrará correctamente la plantilla literal en la consola:

    ¡Me he encendido! Soy el S21, tengo una cámara 48px y un procesador Snapdragon888
    

Comments are closed.