【发布时间】:2017-03-23 00:04:54
【问题描述】:
Node的emitter.removeListener如何在ES2015中实现?向数组添加回调很简单:
let callbacks = [];
function registerCallback(handler) {
callbacks.push(handler);
});
那个特定的函数以后如何在没有 registerCallback 返回 some identifier for the function 的情况下被删除?换句话说,unregisterCallback(handler) 应该不需要任何其他参数,并且应该删除该处理程序。 unregisterCallback 将如何检查之前是否添加了匿名函数?
运行handler.toString()(可能还有一个哈希函数)是为函数创建标识符的可靠解决方案吗?或者unregisterCallback 应该如何遍历callbacks 以删除该特定元素? (或者在 Set 中的对象或函数中找到适当的键。)
mySet.add(function foo() { return 'a'})
mySet.has(function foo() { return 'a'}) // false
【问题讨论】:
标签: javascript ecmascript-6 symbols