我想在JS中制作一种“购物清单”。我在使用函数的参数访问对象时遇到问题。
shopList = {
create: function createList(listName) {
listName = {};
listName["Banana"] = 2
},
output: function output(listName) {
console.log(listName)
},
};
shopList.create('list')
shopList.output('list')
当我运行shopList.output时,返回'list'。如何通过参数访问对象?希望这不是重复,现在谷歌搜索几个小时,并没有取得任何进展。
答案 0 :(得分:5)
如果您希望能够使用动态名称配置列表,则需要使用bracket notation在this
对象中创建列表。像这样:
var shopList = {
create: function createList(listName) {
this[listName] = {};
this[listName]["Banana"] = 2
},
output: function output(listName) {
return this[listName];
}
};
shopList.create('list');
console.log(shopList.output('list'));

然而,正如@armchairdj在评论中指出的那样,创建一个容器专用属性来保存列表会更好:
var shopList = {
lists: {},
create: function createList(listName) {
this.lists[listName] = {};
this.lists[listName]["Banana"] = 2
},
output: function output(listName) {
return this.lists[listName];
}
};
答案 1 :(得分:2)
如果你想通过天真添加任意的,用户提供的密钥来避免破坏showList对象的方法,你应该为列表创建一个内部命名空间。
Destination mapped = Map<Source, Destination>(source, translations);