2017-03-16 49 views
0

我有一個綁定函數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]

這是一個問題,因爲如果我添加一些綁定函數ab,然後刪除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

哇,我應該只使用數組。

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 
相關問題