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}
.
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ámetrosmodel
,camera
yprocessor
. 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:
Como puedes ver, el método
turnOn()
no tiene ningún parámetro y en su lugar utiliza la palabra clavethis
para referirse a las propiedades del objetosamsung
.Al llamar a
samsung.turnOn()
, se mostrará correctamente la plantilla literal en la consola: