javascript调用字符串作为函数

时间:2011-12-20 17:06:20

标签: javascript string function eval invoke

我在javascript中制作了一个i18n对象,如下所示来管理我的javascript文件中的语言

i18n = {

        currentCulture: 'pt_PT',

        pt_PT : {
            message_key : "text in portuguese"
        },
        en_US: {
            message_key : "text in english",
        },

        /**
         * translate
         */
        __ : function(key,culture){
                return this.culture.key;
        },


        /**
         * returns the active user culture
         */ 
        getUserCulture : function(){
            return this.currentCulture;
        },


        /**
         * sets the current culture
         */ 
        setCulture : function(culture){
            this.currentCulture = culture;
        }
}

我需要根据translate函数的键和文化参数返回正确的消息。 问题是在行返回this.culture.key; javascript试图找到i18n对象中的“文化”适当性。 我怎样才能打电话,例如this.pt_PT.message_key?

感谢您的帮助。

感谢发布解决方案的所有人。我只接受一个anwser,所以我接受了第一个。

3 个答案:

答案 0 :(得分:3)

使用bracket notation。假设culture'pt_PT'key'message_key'

return this[culture][key];

答案 1 :(得分:3)

替换:

this.culture.key

使用:

this[culture][key]

答案 2 :(得分:1)

Javascript对象are associative arrays,您可以使用数组语法查找属性:

return this[culture][key];