Create a simple hangman game using OOP and Javascript
Good things

The code appears to function properly.
The code makes good use of strict equality operators and functional techniques like using .every().
const is used for most variables.
Prototypes are used properly.

Suggested changes
Strict mode flaw
Strict mode is enabled with the string literal:
&quot;use strict&quot;;

Yet the first line of the two JS files is

&quot;strict&quot;;


Variable declarations
Some variables declared with let could be declared with const since they are not re-assigned - e.g. puzzle since it is never re-assigned. Using const instead of let helps avoid accidental re-assignment and other bugs.
status values
The values for status could be stored in constants - e.g.
const STATUS_FAILED = 'Failed';
const STATUS_PLAYING = 'Playing';
// ... etc...

Then those can be used in the code- e.g. instead of

this.status = &quot;Playing&quot;;


it can use the constant:
this.status = STATUS_PLAYING;

Those could also be stored in &quot;an enum&quot;
const STATUS_VALUES = Object.freeze({ FAILED: 0, PLAYING: 1, FINISHED: 2});

With this approach, there is no risk of mistyping the values throughout the code, and if a value needs to be updated, it can be done in one place.
Selecting elements
It isn't wrong to use querySelector to get elements by id but using getElementById() &quot;is definitely faster&quot; 1 (see this jsPerf test for comparison).
ES-6 class syntax
The code could be converted to the newer ES6 class syntax - bear in mind that it is &quot;primarily syntactical sugar over JavaScript's existing prototype-based inheritance&quot;. If there were many subclasses then it would help simplify setting up the prototypal inheritance.