使用函数参数在JavaScript中访问对象

Pau*_*eit 1 javascript javascript-objects

我想在JS中制作一种"购物清单".我在使用函数的参数访问对象时遇到问题.

shopList = {
  create: function createList(listName) {
    listName = {};
    listName["Banana"] = 2
  },

  output: function output(listName) {
    console.log(listName)
  },

};

shopList.create('list')
shopList.output('list')
Run Code Online (Sandbox Code Playgroud)

当我运行shopList.output时,返回'list'.如何通过参数访问对象?希望这不是重复,现在谷歌搜索几个小时,并没有取得任何进展.

dfs*_*fsq 5

如果您希望能够使用动态名称配置列表,则需要使用括号表示法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'));
Run Code Online (Sandbox Code Playgroud)

但是,正如@armchairdj在评论中指出的那样,最好创建一个容器专用属性来保存列表:

var shopList = {
    lists: {},

    create: function createList(listName) {
        this.lists[listName] = {};
        this.lists[listName]["Banana"] = 2
    },

    output: function output(listName) {
        return this.lists[listName];
    }
};
Run Code Online (Sandbox Code Playgroud)