无法使用变量访问对象属性

时间:2017-05-04 10:41:30

标签: javascript arrays object

我有一个看起来像这样的对象:

var set_1 = {
    id: 'set_1',
    nameofSet : 'English fruits',
    category: 'languages',
    cards : [
        {
            front : 'apple',
            back : 'jablko'
        },
        {
            front : 'orange',
            back : 'pomarancza'
        },
        {
            front : 'pear',
            back : 'gruszka'
        }
    ]
}

现在有一个功能:

$('#chooseSet').on('click', '.setName', function() {
    var setName = this.getAttribute("data-set-name");
    editCards(setName);
});

这是HTML:

<div class="setName" data-set-name="set_1">English fruits</div>

它为setName函数提供editCards参数,如下所示:

editCards(setName) {
    console.log(setName); // logs "set_1"
    console.log(setName.cards); // logs "undefined" - why?
    console.log(set_1.cards);  // logs the `cards` array from `set_1'.
    // code
}

它需要setName参数。

我的问题是 - 为什么第二个console.log没有给我cards' array as it does in the third console.log`示例?

1 个答案:

答案 0 :(得分:4)

因为任何属性的值都是字符串。因此,在您的情况下,data-set-name会返回字符串"set_1",而不是对变量set_1的引用。如果您的set_1变量是全局的,那么您应该可以这样做 -

console.log(window[setName].cards)