【发布时间】:2013-04-11 02:20:57
【问题描述】:
我知道“自我”的魔法。但是看看这个来自nodejs的sn-p(不完整)。
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;
......
}
我的理解是我们必须使用 self 来创建一个闭包。这些行中没有闭包,但作者在将其分配给 self 后同时使用了这两个闭包。这里有什么不同吗?
【问题讨论】:
-
我认为使用它只是因为约定和与其余代码的统一性。在一个地方使用
this可能只是一种疏忽。 -
因为
self设置为this它们是同一个变量。我不确定作者为什么将两者混为一谈。
标签: javascript node.js closures