javascript使用变量中的键创建一个对象

时间:2014-02-24 18:03:49

标签: javascript

在JavaScript中,是否有一种更短的方法可以从下面的变量创建对象。

var d = 'something';
function map(d){
   var obj = {};
   obj[d] = d;
   return obj;
}

嗯,最短的看起来像,但它是错误的,因为键是文字d而不是它的值。

function wrong(d){
   return {d:d}
}

我不介意第一个版本,但想知道任何简洁的方式。

感谢。

1 个答案:

答案 0 :(得分:3)

我建议实例化一个匿名函数。

function map(d) {
    return new function () {
        this[d] = d;
    };
}

使用匿名函数可以让您将所有属性声明保存在同一个地方,使其更有条理。如果您需要设置其他默认密钥,可以轻松添加:

new function () {
    this[d] = d;
    this.foo = 'bar';
};

与对象文字对比,您将在两个地方声明:

obj = {
    foo: 'bar'
};
obj[d] = d;

所有人都说,原始代码原样很好。它简洁,易读,易于维护。

function map(d) {
    var obj = {};
    obj[d] = d;
    return obj;
}