Мне же просто нужно один раз сохранить в переменной свойство,
чтобы не получать его каждый раз заново.
Не понимаю почему зашла речь о синхронности и тп.
Это максимум, что я могу вам показать, чтобы поддержать тему:
Node.prototype.bind = function(varName, propName) {
let elem = this;
Object.defineProperty(window,varName,{
get() {
console.log('-> '+elem[propName]);
varName = elem[propName];
},
set(newVal) {
elem[propName] = newVal;
console.log(elem[propName]+' -> '+newVal);
varName = elem[propName]
}
});
this.free = function() { // Тут что-то напутал (
varName = null;
console.log('var '+varName+' is FREE now!');
}
}
<div id='Elem'>Lorem</div>
Юзаж:
let elem = document.getElementById('Elem');
elem.bind('txt','textContent');
console.log(txt); // -> Lorem
if (elem.style.color == '#000') {
txt = 'Ipsum'; // Lorem -> Ipsum
}
else {
txt = 'Dolor'; // Ipsum -> Dolor
};
txt.free(); // var txt is FREE now!
console.log(txt) // null
Надеюсь на вашу помощь, спасибо!