我有下面的代码,用于动态地向对象添加getter:
const obj = {};
const uni = { name1: ..., name2: ..., ...};
for(const nm in uni) {
const u = obj[nm] = {};
Object.defineProperty(u, 'value', {
configurable: true,
enumerable: true,
get: () => { return uni[nm] },
});
}
我希望getter返回不同的值,所以我希望uni[nm]
被理解为字面意义上的,即第一个getter返回uni.name1
,第二个getter返回uni.name2
,以此类推。
我该怎么做呢?
编辑:
我想动态创建一个对象,如下所示:
{
name1: { get value() { return uni.name1 }},
name2: { get value() { return uni.name2 }},
...
}
2条答案
按热度按时间byqmnocz1#
Don't use
for..in
。你几乎从来不需要Object.defineProperty
。这都是石器时代的JavaScript。相反,使用-
get
关键字这可以用array.reduce和-表示
ogq8wdun2#
您可以通过使用方括号符号([])动态访问uni对象中的属性来实现这一点,如下所示: