Using prototypes creating a Hangman game
Encapsulation


  I would like to know how I should encapsulate the logic.
  
  Can I have logic outside the methods (as I'm doing, like
  hangman.letters.push(e.key); in document.onkeydown or should I only
  call the methods here and they should strictly run the game?


Ideally no internals should be exposed.
Using the hangman object should go more like this:

document.onkeydown = function(e) {
  if (hangman.guessLetter(e.keyCode)) {
    if (hangman.won()) {
      // congrats!
      // -&gt; display complete word
      // -&gt; clean up UI
    } else {
      // good guess!
    }
  } else {
    if (hangman.lost()) {
      // ouch, you lost
      // -&gt; clean up UI
    } else {
      // ouch, you missed, try again
    }
  }
  // -&gt; display word status, for example _we_e_ when "w" and "e" were already found in "sweden"
};


No properties of hangman should be accessed, only methods called.

Usability

The game looks incomplete:
the UI shows a large image and a button,
but expects input from the keyboard and writes messages to console.
It's hard to use like this.

Performance

The implementation of _checkWinner is inefficient.
It splits the secret word and the guess to their letters and joins them to compare to each other.
This operation is unnecessary for the secret word,
because once it's generated at the beginning of the game,
it never changes.
So it would be better to generate the word with sorted letters up front.