【发布时间】:2017-08-08 03:36:21
【问题描述】:
我有一个绑定函数f:
var f = someFunction.bind(this);
我没有将f 传递给函数,而是将其保存在一个对象中,而是将一个id 传递给f:
var obj = {};
var nextID = Object.keys(obj).length;
obj[nextID] = f;
// pass nextID to some other function
但是,我也想在某些时候删除条目:
delete obj[someID]
这是一个问题,因为如果我添加一些绑定函数a和b然后删除a,我得到的下一个id将是1,我放在那里的绑定函数会覆盖b .
我能做的是:
function getNextID() {
var possibleID = Object.keys(obj).length;
while (obj[possibleID])
possibleID *= 2; // or some other mutation
return possibleID;
}
但这感觉很难看。
我尝试使用绑定函数作为键,但没有奏效:
obj[a] = a;
obj[b] = b;
console.log(Object.keys(obj).length); // 1
如何获取当前未使用的任意对象属性?这肯定是我想多了……
【问题讨论】:
标签: javascript function hash hashmap