gab*_*eno 5 javascript node.js
从nodejs 源代码(LOC 179),我们有以下内容:
EventEmitter.prototype.once = function(type, listener) {
/** ... **/
function g() { /** ... **/ }
g.listener = listener; // => ???
this.on(type, g);
return this;
};
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的想法是这样的:
EventEmitter.once()设置一个事件type并listener在通过调用回调后立即将其删除g().但这条生产线究竟做了g.listener = listener;什么呢?
它是否在调用时添加了一个属性listener,该属性是构造函数创建的函数对象的函数g()?
它被设置为以后可以调用removeListener.
如果您调用this.once(event, listener)并稍后调用this.removeListener(listener),则代码将无法listener在列表中找到,因为它包含在内部g.
这就是L214测试的原因:
if (list === listener ||
(util.isFunction(list.listener) && list.listener === listener)) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |