使用点表示法设置对象属性的值?

时间:2014-11-26 10:05:02

标签: javascript arrays object associative-array

我理解我的头衔可能有点模糊,但请耐心等待。

我正在玩localStorage,所以我做了一些非常简单的事情,我可以在Firefox的控制台中搞砸。

我有以下代码:

function saved(data) {
    if (localStorage.getItem(data) !== null) {
        return localStorage.getItem(data);
    } else {
        return false;
    }
}

var Player = {
    canOpenDoors: false ? saved('canOpenDoors') == false : saved('canOpenDoors'),
}

Player.setAbility = function(ability, value) {
    Player.ability = value;
    localStorage.setItem(ability, value);
}

Player.getAbility = function(ability) {
    return Player[ability];
}

console.log(Player.canOpenDoors);

此处有问题的部分是Player.ability = value函数中的Player.setAbility。显然,我希望它将ability部分视为传递给函数的参数,因此如果我Player.setAbility('canOpenDoors', true)它将Player.canOpenDoors设置为true。我怀疑实际发生的是它将Player.ability设置为true,就好像我希望能够实际成为对象的键。

我可以这样做:

Player.setAbility = function(ability, value) {
    Player[ability] = value;
    localStorage.setItem(ability, value);
}

但除非我被误导,否则将对象的值设置为关联数组并不是“正确的”。有没有办法可以通过点符号来做到这一点,或者我可能忽略了这一点,并且有办法专门为对象做这个?

0 个答案:

没有答案