Por que atribuir `this` a` self` e executar `self.method ()`?

Eu estou lendo a fonte demangusto

<code>Collection.prototype.onOpen = function () {
  var self = this;
  this.buffer = false;
  self.doQueue();
};
</code>

Eu não entendo porque o autor atribuithis paraself e correself.doQueue(). Por que não apenas executar:

<code>this.buffer = false;
this.doQueue();
</code>

Eu sou novo em javascript, obrigado pela ajuda.

questionAnswers(5)

yourAnswerToTheQuestion