JavaScript вызывает строку как функцию - PullRequest
0 голосов
/ 20 декабря 2011

Я создал объект i18n в javascript, как показано ниже, для управления языками в моих файлах 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;
        }
}

Мне нужно вернуть правильное сообщение, основываясь на ключевых и культурных параметрах функции перевода. Проблема в том, что в строке return this.culture.key; javascript пытается найти «культура» уместности в объекте i18n. Как я могу сделать это, например this.pt_PT.message_key?

Спасибо за вашу помощь.

Спасибо всем, кто разместил решение. Я могу принять только один ответ, поэтому я принимаю первый.

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Заменить:

this.culture.key

на:

this[culture][key]
3 голосов
/ 20 декабря 2011

Использовать скобка . Предполагая, что culture равно 'pt_PT', а key равно 'message_key':

return this[culture][key];
1 голос
/ 20 декабря 2011

Javascript объекты являются ассоциативными массивами , и вы можете использовать синтаксис массива для поиска свойств:

return this[culture][key];

...