在JavaScript中,是否有一种更短的方法可以从下面的变量创建对象。
var d = 'something';
function map(d){
var obj = {};
obj[d] = d;
return obj;
}
嗯,最短的看起来像,但它是错误的,因为键是文字d
而不是它的值。
function wrong(d){
return {d:d}
}
我不介意第一个版本,但想知道任何简洁的方式。
感谢。
答案 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;
}