node.js - 在动态命名的对象中调用方法
问题描述
我正在尝试调用动态命名对象的方法。
我有几个对象,每个对象都包含一个名为“getWeight”的方法。我需要调用这些对象子集的这个方法。但是,对象的子集取决于用户输入的信息,这就是我尝试动态构造对象名称并在循环中调用它的“getWeight”方法的原因。
我的代码如下:
// Importing objects containing 'getWeight' method
const Apple = require('../classses/Apple');
const Pear = require('../classes/Pear);
const Carrot = require('../classes/Carrot);
const Potato = require('../classes/Potato);
const promises = {};
const user = 'userX'; // This is the inputted info, could also equal 'userY'.
const searchableFoods = {
userX: ['Apple', 'Pear'],
userY: ['Carrot', 'Potato']
};
for (i = 0; i < searchableFoods[user].length; ++i) {
promises[searchableFoods[user][i]] = new Promise(function(resolve, reject) {
// Below line should behave like: Apple.getWeight(arg1, function....
searchableFoods[user][i].getWeight(arg1, function(response) {
resolve(response);
})
})
}
不幸的是,我收到此错误:
[searchableFoods[user][i].getweight] is not a function
我尝试了许多变体,但无法使其工作。是否有可能做到这一点?
解决方案
你能定义不使用字符串的数组吗?类似的东西?
const searchableFoods = {
userX: [Apple, Pear],
userY: [Carrot, Potato]
};