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

时间:2015-10-17 19:09:44

标签: 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')

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

2 个答案:

答案 0 :(得分:5)

如果您希望能够使用动态名称配置列表,则需要使用bracket notationthis对象中创建列表。像这样:



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);