我知道“ self ”的魔力。但是看看来自 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;
......
}
据我了解,我们必须使用 self 来创建闭包。这些行中没有闭包,但作者在将其分配给 self 后使用了两者。这有什么区别吗?
最佳答案
在您在此特定代码示例中显示的内容中,甚至没有理由拥有 self
变量,因为没有其他函数作用域可能需要访问 的原始值>这个
。
一些开发人员有一个一致的方法或约定来创建一个局部变量,如 self
并为其分配 this
的值,以便他们可以在需要时使用它, 在闭包中。 self
变量也可以最小化为小于 this
因为它可以重命名为一个字符的变量名,但是 this
不能重命名。
在任何情况下,如果删除 self
并且在此特定方法中仅使用 this
,则此处的功能不会受到影响。
我自己的个人习惯是只定义 self
如果确实需要它,这与我用于其他局部变量的逻辑相同,然后我只在需要它的闭包内使用它。
关于javascript - 关于这个和 javascript 中的 self ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074990/