У меня есть глобальная переменная, которая позже обновляется в моей программе, и предыдущий набор переменных, в котором эта глобальная переменная использует исходное ссылочное значение.
Чтобы проиллюстрировать,
var testVar = 1;
var hash = {
test : {
testGetVar : {opacity: testVar},
testGetVarFn : function(){ return {opacity: testVar}; }
}
}
testVar = 2;
console.log(hash.test.testGetVar.opacity); // returns 1
console.log(hash.test.testGetVarFn().opacity); //returns 2
Кто-нибудь объяснит, как это сделать?Скажем, если бы у меня было 10 объектов в хэше, использующих testVar, пришлось бы мне писать fn, чтобы получить обновленное значение?
РЕДАКТИРОВАТЬ: я изменил некоторые требования и привел пример для конкретных целей.
Вот методы getter / setter, но они не работают.
var testVar = new Field("123");
function Field(val){
this.value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
var hash = {
test : {
testGetVar : {opacity: testVar.value} ,
testGetVarFn : function(){ return testVar.value; }
}
}
testVar.value = "abc";
console.log(hash.test.testGetVar.opacity); // returns 123
console.log(hash.test.testGetVarFn()); //returns abc
Я предполагаю, что поскольку метод get вызывается при создании хэша, он хранит ссылку на это значение в то время., таким образом, никогда не вернет обновленное значение