我有一个绑定函数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
如何获取当前未使用的任意对象属性?当然,我正在过度思考......
答案 0 :(得分:0)
var arr = [];
function f() { }
function f2() { }
var a = f.bind(this);
var b = f2.bind(this);
arr.push(a);
var id = arr.length; // 1
delete arr.id;
arr.push(b);
console.log(arr.length); // 2