Soy nuevo en javascript y estaba tratando de crear un objeto de cronómetro como se describe en un video de YouTube. El siguiente es el código:
function Stopwatch(){ let durationVal = 0; let startFlag = 0; this.start = function(){ if (startFlag === 0){ durationVal = Date.now() startFlag = 1; } else{ throw new Error('Stopwatch is already running') } } this.stop = function(){ if(startFlag === 1){ durationVal = Date.now() - durationVal startFlag = 0; } else{ throw new Error('Stopwatch is not running') } } this.duration = durationVal; this.reset = function(){ durationVal = 0; }}
Cuando intento crear un objeto y acceder a su propiedad de duración
let sw = new Stopwatch() sw.start() sw.stop() console.log(sw.duration)Devuelve un cero. Sin embargo, cuando cambio mi javascript para usar un método para obtener el valor de duración:
this.duration = function(){ return durationVal; }da el valor correcto. ¿Puedes explicar porque?