【问题标题】:How to generate an arbitrary object property that's not in use?如何生成未使用的任意对象属性?
【发布时间】: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]

这是一个问题,因为如果我添加一些绑定函数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

如何获取当前未使用的任意对象属性?这肯定是我想多了……

【问题讨论】:

    标签: javascript function hash hashmap


    【解决方案1】:

    哇,我应该只使用数组。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2013-10-04
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多