Об этом и себе в javascript

Я знаю магию "Я". Но посмотрите на этот фрагмент из nodejs(не полный).

Socket.prototype.connect = function(options, cb) {
......
  var self = this;
  var pipe = !!options.path;

  if (this.destroyed || !this._handle) {
    this._handle = pipe ? createPipe() : createTCP();
    initSocketHandle(this);
  }

  if (typeof cb === 'function') {
    self.once('connect', cb);
  }

  timers.active(this);

  self._connecting = true;
  self.writable = true;
......
}

Насколько я понимаю, мы должны использовать себя, чтобы создать замыкание. Здесь нет замыканий в этих строках, но автор использует оба после присвоения этого себе. Есть ли здесь какая-то разница?

1 ответ

В том, что вы показали в этом конкретном примере кода, нет причин даже иметь self переменной, потому что нет других областей действия функций, которым может потребоваться доступ к исходному значению this,

Некоторые разработчики имеют последовательную методологию или соглашение для создания локальной переменной, такой как self и назначьте ему значение this просто для того, чтобы они могли использовать его при необходимости в замыканиях. self переменная также может быть минимизирована меньше this потому что он может быть переименован в однозначное имя переменной, но this не может быть переименован

В любом случае, функциональность здесь не будет затронута, если self был удален и только this был использован в этом конкретном методе.

Мое личное соглашение - определять только self если это действительно необходимо, это та же логика, которую я использую для других локальных переменных, а затем я использую ее только внутри замыкания там, где это необходимо.

Другие вопросы по тегам