我希望根据对象中的值动态调用构造函数。
我们说我有一个对象:
var food = {
pizzas:[
{
pizza: 'Pepperoni'
},
{
pizza: 'Vegetarian'
}
]
}
现在,让我们说我有一些绑定到全局对象的构造函数。
window.pizzaConstructors.Pepperoni = function(){
// do something
}
window.pizzaConstructors.Vegetarian = function(){
// do something else
}
我希望能够做的是循环遍历food.pizzas
数组,并根据当前索引的pizza
类型调用相应的构造函数。
所以,如果我有:
(for pizza in food.pizzas){
var currentPizza = food.pizzas[pizza]
new pizzaConstructors.currentPizza();
}
知道我怎么能这样做吗?
答案 0 :(得分:0)
使用[]
语法访问构造函数。
(for pizza in food.pizzas){
var currentPizza = food.pizzas[pizza]
new pizzaConstructors[currentPizza]();
}
此new pizzaConstructors.currentPizza()
表示调用指定的currentPizza
函数。
此new pizzaConstructors[currentPizza.pizza]()
表示评估currentPizza
,获取它的值,使用已评估的currentPizza
的名称调用该函数。
var food = {
pizzas:[
{
pizza: 'Pepperoni'
},
{
pizza: 'Vegetarian'
}
]
};
const pizzaConstructors = {};
pizzaConstructors.Pepperoni = function(){};
pizzaConstructors.Vegetarian = function(){};
const arrOfObjects = [];
for (pizza in food.pizzas) {
const currentPizza = food.pizzas[pizza].pizza;
arrOfObjects.push(new pizzaConstructors[currentPizza]());
}
console.log(arrOfObjects);