javascript从变量创建一个带有键的对象
在JavaScript中,是否有比下面更短的方法从变量创建对象javascript从变量创建一个带有键的对象,javascript,Javascript,在JavaScript中,是否有比下面更短的方法从变量创建对象 var d = 'something'; function map(d){ var obj = {}; obj[d] = d; return obj; } 最短的看起来是这样的,但它是错误的,因为key是literald而不是它的值 function wrong(d){ return {d:d} } 我不介意第一版,但想知道有没有简洁的方法 谢谢。我建议实例化一个匿名函数 function map(d)
var d = 'something';
function map(d){
var obj = {};
obj[d] = d;
return obj;
}
最短的看起来是这样的,但它是错误的,因为key是literald
而不是它的值
function wrong(d){
return {d:d}
}
我不介意第一版,但想知道有没有简洁的方法
谢谢。我建议实例化一个匿名函数
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;
}
是的,用第一种方法。第二种方法是,密钥将是d,而不是
d
的值。出于好奇,如果密钥的名称始终是值,为什么需要将其存储为两者?使用obj.d=d@RajeshCP-因为这不起作用。为什么这比OP已经有的更好?@jfriend00,我不记得曾经说过它更好,但我推荐它,因为你可以将所有初始化保持在同一个位置,而不是执行o={foo:bar};o[嘶嘶声]=嗡嗡声代码>。我觉得它使代码更整洁。@jfriend00,而且,原始代码实际上比op最初列出的代码要短,但这并没有缩小,所以它并没有太大的区别。我不知道为什么会被否决。在我看来,这是一个极好的答案+1@Paulpro,我最初的回答不是很好。