Может нужно слушать window, и когда происходит обращение к переменной txt, изменять содержимое элемента.
Почему бы для этого не подошёл сеттер, определённый у объекта window?
//там, где у Вас в посте №16, строка 1, я предлагаю заменить на:
Object.defineProperty(self, "txt", {
set: function(value) {
Elem.textContent = value;
}
});
Не знаю, по какой причине игнорируете такой способ, хотя с производительностью у него всё в порядке.
Ещё один способ...
window = new Proxy(window, {
set: function(object, property, value) {
object[property] = value;
if(property === "txt") {
Elem.textContent = value;
}
}
});
...который на самом деле не работает!
Вы хотите сделать
txt = "lorem";, но переменной присвоен не сам сеттер, а то что он возвратил. Даже если там был бы сеттер, присвоив переменной новое значение, вы бы его просто переопределили, поскольку это функция.
Кстати почему вместо переменной txt не использовать функцию txt... И тогда вместо
txt = `lorem`; будет просто
txt `lorem`;. Ещё меньше символов...
Изменённый код из поста №16
var txt = function(value) { return "0" in arguments ? Elem.textContent = value : Elem.textContent; };
alert(txt()) // 'Lorem';
// ... код в 50 строк ...
txt `Ipsum`; // 'Lorem -> Ipsum'
// ... еще код в 1000 строк ...
txt `Dolor`; // 'Ipsum -> Dolor'