Что я пытаюсь сделать здесь, у меня есть следующий класс SessionМодифицирования Javascript атрибутов класса
function Session(){
this.accounts = {};
this.setupAccounts = function(res){
this.accounts = res;
log(res);
log(this.accounts);
};
this.test = function(){
log(this.accounts);
};
}
Класс Session имеет атрибут счет, которые будут держать хранить определенные данные. Но чтобы инициализировать его, я инициализирую его как пустой объект.
Далее я вызываю метод setupAccounts для изменения значения учетных записей. Например, я читаю файл, загружаю его данные и сохраняю эти данные внутри учетных записей.
Но у меня проблемы с областью.
Например, следующий код:
var session = new Session();
var user_account_path = '/adata/user_accounts.json';
loadJsonFile(user_account_path)
.then(session.setupAccounts);
session.test();
Так что я делаю в коде выше, извлечение содержимого файла в качестве объекта Json, а затем я передаю, что данные в методе setupAccounts в порядке для хранения этих данных в переменных учетных записях. Но мой результат выглядит следующим образом:
Object {arjrule3: Object} // printing the json object read from file
Object {arjrule3: Object} // locally changed value of accounts
console.log(session.accounts) // printing global value of accounts
{} // value has not changed.
Что я делаю неправильно? Почему значение для учетных записей не меняется для сеанса объекта?
Что-то смешной только что произошло, если я пишу код как следующее:
var session = new Session();
var user_account_path = '/adata/user_accounts.json';
loadJsonFile(user_account_path)
.then(function(res){
session.setupAccounts(res); // Change Here
});
Выход:
Object {arjrule3: Object}
Object {arjrule3: Object}
session.accounts
Object {arjrule3: Object} // works! Why ?
Он работает, почему это так?