JavaScript: возможно ли получить доступ к закрытым переменным (т. Е. Которые были скрыты внутри замыкания)? - PullRequest
0 голосов
/ 04 февраля 2012

Я реализовал объект как замыкание в JavaScript, некоторые методы являются общедоступными, некоторые другие являются частными:

var MyObject = (function(){

    function _hiddenMethod() {
        /* Do something fancy here, such as reading data 
        from an external source and storing it in 
        _hiddenVariable2 */
    } 

    var _hiddenVariable1 = 3;
    var _hiddenVariable2 = undefined;

    return {
        publicMethod: function() {
            _hiddenMethod();
            return _hiddenVariable1;
        };
    };

})();

Есть ли способ, которым (опытный) пользователь мог бы прочитатьсодержание _hiddenVariable2?Я предполагаю, что он знает свое существование, прочитав код JavaScript.

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Нет никакого способа, о котором я знаю, но это может зависеть от движка javascript.

Также имейте в виду, что любой может отлаживать javascript и замечать всякий раз, когда _hiddenVariable2 установлен в замыкании (напишите что-то вроде _hiddenVariable2 =5 внутри _hiddenMethod, попробуйте инструменты разработчика для chrome и вставьте точку останова в _hiddenMethod, и вы сможете увидеть, когда задано _hiddenVariable2).

Таким образом, опытный пользователь может знать текущее значение, если оннапример, отладка кода в V8.

0 голосов
/ 04 февраля 2012

Объявите его как _hiddenVariable2 = undefined; вместо var _hiddenVariable2 = undefined; Он будет доступен любому другому модулю в вашем коде

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