关于这个和自我在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; ...... } 

这是我的理解,我们必须用自己来创build一个封闭。 这里没有closures这些行,但作者使用后,分配给自己。 这有什么不同吗?

在这个特定的代码示例中显示的内容中,没有理由甚至没有selfvariables,因为没有可能需要访问此原始值的其他函数作用域。

一些开发人员有一个一致的方法或惯例来创build一个像self这样的局部variables,并为其赋值,以便在需要时使用它,以便在闭包中使用。 selfvariables也可以最小化,因为它可以重命名为一个字符的variables名称,但不能重命名。

在任何情况下,如果删除了self并且仅在这个特定的方法中使用了这个function,那么这里的function不会受到影响。

我个人的惯例是只定义self如果它实际上是需要的,这是我用于其他局部variables的相同的逻辑,然后我只在需要它的闭包内使用它。