我想获取对象的属性并根据属性调用函数。我正在尝试这样做:
let page = {};
Object.keys(product.details).forEach((k) => {
console.log(k)
switch (k) {
case 'description':
page.add(getDescription());
break;
case 'comment':
page.add(getComment());
break;
case 'subDescription':
page.add(getSubDescription());
break;
}
});
console.log(page);
我的对象
{
about: 'text',
description: 'text',
comment: 'text',
subDescription: 'text'
}
我在控制台中会得到什么:
about
description
...\src\views\partials\product\description.hbs
为什么只有第一个函数被调用,其余的为什么不被调用?我怎么了?
答案 0 :(得分:1)
这只是一个猜测-也许 page.add()根本不存在。
products.about 是对象中的第一个键-因此,在forEach循环中您会得到
console.log(k)
->关于->没什么
下一个键是说明
console.log(k)
->说明->现在,它尝试执行page.add(getDescription());
因为它是在switch块中定义的。如果该功能不存在,它将在此处崩溃。
答案 1 :(得分:0)
page.add
添加到Object.prototype或在对象中声明它,否则未定义它,但这完全没有必要。
使用类似这样的东西,使其更易于处理。为什么要使用函数从具有相同键的对象中获取值?
const page = {}
for (let key in product.details) {
console.log(key) // returns about, comment, description, ....
page[key] = product.details[key]
}
console.log(page)
/* console.log(page) returns
{
about: "text"
comment: "text"
description: "text"
subDescription: "text"
}
*/