javascript key i18n

时间:2012-06-05 17:04:13

标签: javascript arrays dynamic key

我有类似的代码。

var myI18n; // json : "{"close":"بستن","locationInformation":"مشخصات جغرافیایی","yes":"بله","no":"خیر"}"

我想用这样的东西。

$.modal({
    buttons: {
        myI18n.close: function(win) {

        }
    }
});

但我有语法错误。 也可以使用此方法字符串不要更改。

var aaa = myI18n.close;
$.modal({
    buttons: {
        aaa: function(win) {

        }
    }
});

3 个答案:

答案 0 :(得分:2)

将具有动态名称的属性分配给对象的唯一方法是使用数组语法

 var myButtons = {};
 myButtons[myi18n.close] = ...

答案 1 :(得分:2)

您无法在对象文字中引用键名中的变量,因此您需要先创建对象,使用常规[]表示法填充它,然后在$.modal中使用它。

buttons = {}

buttons[myI18n.close] = function(win) {
   // ....
}

$.modal({
    buttons: buttons
});

答案 2 :(得分:1)

您不能将对象文字直接用于变量键。您需要将代码分离出来以使用数组访问语法(obj[keyname] = value)。

var obj = {
        buttons: {}
    };
obj.buttons[myI18n.close] = function () {...};
$.modal(obj);

或者,您可以使用模块模式:

$.modal({
    buttons: (function () {
        var btns = {};
        btns[myI18n.close] = function () {...};
        return btns;
    }())
});