Javascript - конвертировать строки в константы - PullRequest
0 голосов
/ 11 января 2011

Как преобразовать строку в константу в Javascript

например,

str = "Пользователь" // Javascript magic User

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Нет - в JavaScript нет ни констант, ни переменных только для чтения.(Некоторые расширения JavaScript предоставляют только для чтения средства доступа , но это совсем другое.)

0 голосов
/ 11 января 2011

Насколько я знаю, в Javascript нет такой вещи, как константы. Но вы можете создать объект, который будет предоставлять эту информацию в виде свойств только для чтения:

<script type="text/javascript">
    function defineConstant(obj, name, value) {
        // Non-standard!
        if(obj.__defineGetter__) {
            obj.__defineGetter__(name, function () { return value; });
            obj.__defineSetter__(name, function() { throw "Read-only property"; });
        } else {
            if(typeof(Object.defineProperty) != 'undefined') {
                try {
                // First, trying the "normal" way
                defineReadOnlyProperty(obj, name, value);
                } catch(ex) {
                    var temp = obj;

                    // Ugly hack to make "defineProperty" work in IE
                    // (only works on DOM elements prior IE9)
                    obj = document.createElement('DIV');

                    // Copying object members
                    for(var key in temp)
                        obj[key] = temp[key];

                    // Now it should define property
                    defineReadOnlyProperty(obj, name, value);
                }
            }
        }

        return obj;
    }

    function defineReadOnlyProperty(obj, name, value) {
        Object.defineProperty(obj, name, {
            get: function() { return value; },
            set: function() { throw "Read-only property"; }
        });
    }
</script>

И использование вышеуказанной функции будет выглядеть так:

<script type="text/javascript">     
    var Global = {};

    Global = defineConstant(Global, 'MagicUser', 'User');           

    // Getting "User"
    alert(Global.MagicUser);

    // Throws an error
    Global.MagicUser = 'User2';
</script>

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...