Показать сообщение отдельно
  #1 (permalink)  
Старый 01.07.2017, 09:54
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Как присвоить переменной свойство, а не его значение?
Товарищи, вот то, что я смог сделать:
<div id='Elem'>Lorem</div>

И код:
var elem = document.getElementById('Elem');
var current = null;

Object.defineProperty(Element.prototype,'text',{
 get(){
  current = this.textContent;
  console.log(current);
  return '??????'  // возвращаем сеттер свойства 'text' для данного объекта (в данном случае для элемента)
 }
})

// Пример желаемого синтаксиса:
var txt = elem.text;

console.log(txt); // 'Lorem'

txt = 'Ipsum';  // 'Lorem -> Ipsum'

txt = 'Dolor'; // 'Ipsum -> Dolor'

txt.free();  // 'variable 'txt' is free now'

Что должен вернуть геттер, чтобы я потом мог присваивать
новый текст элементу 'elem', согласно приведенному синтаксису.
Предположу что объект или функцию, но ведь, наверное, не существует сеттера самого объекта.

Возможно Javascript не может возвращать свойство, а лишь его значение. Бывают ли безымянные свойства? Хрен знает ))

Приведенный синтаксис позволит упростить и сократить код.
Иначе будет:

elem.text = 'Ipsum';
elem.text = 'Dolor';
elem.text = 'Sit Amet'
//...Дублирование кода ( повторение 'elem.text' сто раз ) ((


Тут мы каждый раз получаем свойство для того чтобы поменять его значение.
Мне же нужно ОДИН РАЗ получить свойство, а затем сетить(задавать) его значение, пока не надоест

Я же предлагаю просто присваивать переменной новое значение
и то (нап. функция), что следит за этой переменной будет менять содержимое 'elem' согласно присвоенному значению.
То есть мы как бы привязываем переменную под нужное СВОЙСТВО до тех пор пока не введем: somevar.free()

Возможно ли это?
Что должен вернуть геттер, чтобы реализовать указанный синтаксис?

Последний раз редактировалось Teamur, 01.07.2017 в 11:05.
Ответить с цитированием