Skip to content

Instantly share code, notes, and snippets.

@ianjosephwilson
Created August 31, 2025 22:02
Show Gist options
  • Select an option

  • Save ianjosephwilson/ace8b81c1379985a45a6e143b548f711 to your computer and use it in GitHub Desktop.

Select an option

Save ianjosephwilson/ace8b81c1379985a45a6e143b548f711 to your computer and use it in GitHub Desktop.
function Engine() {
let self = {running: false, radius: 15};
return function (msg) {
if (msg === 'turnOn') {
self.running = true;
} else if (msg === 'turnOff') {
self.running = false;
} else if (msg === 'setRadius') {
self.radius = parseInt(arguments[1], 10);
} else if (msg === 'turnOff') {
self.running = false;
} else if (msg === 'printStatus') {
console.log(`STATUS: Engine is ${self.running ? 'on' : 'off'} and radius is ${self.radius}`);
} else {
throw `Invalid method ${msg}`
}
}
}
engine1 = Engine()
engine1('printStatus')
engine1('turnOn')
engine1('printStatus')
engine1('turnOff')
engine1('printStatus')
engine1('setRadius', 100)
engine1('printStatus')
@ianjosephwilson

Copy link
Copy Markdown
Author

Should output something like

STATUS: Engine is off and radius is 15
STATUS: Engine is on and radius is 15
STATUS: Engine is off and radius is 15
STATUS: Engine is off and radius is 100

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment