Tengo un problema al intentar consolar. registrar un literal de plantilla. Como puede ver a continuación, tengo un objeto simple de Samsung, que tiene un método en el que se enciende e imprime la plantilla literal en la consola.
let samsung = { model: "S21", camera: "48px", processor: "Snapdragon888", turnOn: function(model, camera, processor) { console.log( `I have turned on! I am the ${model}, I have a ${camera} camera and a ${processor} processor` ); }, }; console.log(samsung.turnOn()); Lo probé de muchas maneras diferentes, usando funciones de flecha, usando el operador "esto", agregando/eliminando parámetros de la función, poniendo "Samsung" en lugar de "esto", etc. Pero imprime lo siguiente sin importar qué : I have turned on! I am the ${model}, I have a ${camera} camera and a ${processor} processor
No pasó ningún parámetro a la función, por lo que están undefined de forma predeterminada.
Si desea obtener el valor de propiedad del objeto, use this para hacer referencia al objeto:
let samsung = { model: "S21", camera: "48px", processor: "Snapdragon888", turnOn: function() { console.log( `I have turned on! I am the ${this.model}, I have a ${this.camera} camera and a ${this.processor} processor` ); }, }; console.log(samsung.turnOn());Solo para que entiendas la situación:
this se puede usar para hacer referencia al objeto actual para un alcance de ejecución, en el caso de su muestra, es el objeto que definió.
El uso de esa palabra clave le permite acceder a cualquier método ( this.turnOn() ) o propiedad ( this.camera ) que tenga disponible.
Una precaución al usar funciones de flecha es que this perderá su valor, así que tenga cuidado al usar qué sintaxis para definir sus métodos.
En su caso, podría haber funcionado si definió la función fuera del objeto y simplemente pasó cada parámetro por separado usando el . operador.
const turnOn = (model, camera, processor) => { console.log( `I have turned on! I am the ${model}, I have a ${camera} camera and a ${processor} processor` ); }; turnOn(object.model, object.camera, object.processor); O usando this con el método definido dentro del objeto para hacer referencia a cada propiedad.