Об этом и себе в 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
если это действительно необходимо, это та же логика, которую я использую для других локальных переменных, а затем я использую ее только внутри замыкания там, где это необходимо.