Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.07.2017, 02:05
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Teamur
между этими строками может быть любой другой код!
Это мало что меняет, пока не выполнится синхронный код, ничего не отрисуется, а актуальным станет только последнее значение, отсюда эффект зависания браузера, когда выполнение синхронного кода не может завершиться.

Надо понимать, что все процессы в нашем мире протекают с течением времени, если ты посмотришь параметры своего монитора, то с удивлением там обнаружишь частоту обновления экрана в 60Гц (стандарт для ЖК-дисплеев), это означает что изображение монитора обновляется 60 раз в секунду, отсюда не трудно догадаться что период между обновлениями в миллисекундах составляет 1с/60 = 1000мс/60 = 16 мс. Таким образом получается что процесс выполнения кода менее 16 мс браузеру нет смысла ранее визуализировать, так как монитор чисто технически не сможет это реализовать, а за 16мс поверь может много строк кода выполниться.

Последний раз редактировалось Rise, 02.07.2017 в 02:13.
Ответить с цитированием
  #12 (permalink)  
Старый 02.07.2017, 11:58
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Мне же просто нужно один раз сохранить в переменной свойство,
чтобы не получать его каждый раз заново.
Не понимаю почему зашла речь о синхронности и тп.

Это максимум, что я могу вам показать, чтобы поддержать тему:
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


Надеюсь на вашу помощь, спасибо!

Последний раз редактировалось Teamur, 02.07.2017 в 12:06.
Ответить с цитированием
  #13 (permalink)  
Старый 02.07.2017, 16:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Teamur
чтобы не получать его каждый раз заново
Такая запись не означает что textContent выполняется дважды, в зависимости от условия выполнится или первый или второй:
if (elem.style.color == '#000') {
	elem.textContent = 'Ipsum';
} else {
	elem.textContent = 'Dolor';
}

Иначе бы условные операторы не имели смысла, и запись была бы такая о "смысле" которой я уже писал:
elem.textContent = 'Ipsum';
elem.textContent = 'Dolor';

Если смущает повтор слова textContent в коде, то делается просто:
var txt;

if (elem.style.color == '#000') {
	txt = 'Ipsum';
} else {
	txt = 'Dolor';
}

elem.textContent = txt;

// или еще проще

elem.textContent = (elem.style.color == '#000') ? 'Ipsum' : 'Dolor';

// или даже так

var txt = 'textContent';

if (elem.style.color == '#000') {
	elem[txt] = 'Ipsum';
} else {
	elem[txt] = 'Dolor';
}

А то что ты хочешь это не понятно что и лишние расходы.

Последний раз редактировалось Rise, 02.07.2017 в 16:21.
Ответить с цитированием
  #14 (permalink)  
Старый 02.07.2017, 16:35
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Rise,
Отлично!

Блин, зря я написал условный оператор, забудем о нём.
Он мне нахрен не нужен )). Опять же я хотел показать, что между сеттингом нового значения может быть что угодно.

Последний раз редактировалось Teamur, 02.07.2017 в 16:37.
Ответить с цитированием
  #15 (permalink)  
Старый 02.07.2017, 16:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Rise,
у ТС изначально один вопрос можно вытащить сеттер да/нет, если да то как?
Ответить с цитированием
  #16 (permalink)  
Старый 02.07.2017, 16:53
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Что нужно сделать, чтобы реализовать именно такой синтаксис? :
var txt = Elem.textContent;

alert(txt) // 'Lorem';

// ... код в 50 строк ...

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

// ... еще код в 1000 строк ...

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


Может нужно слушать window, и когда происходит обращение к переменной txt, изменять содержимое элемента.
Изначально я хотел это реализоавть используя Object.observe(),
но его как назло забросили (

Можно ли как-то сразу начать отслеживание объекта window при загрузке страницы?
Похоже этот синтаксис нереален в Javascript
Ответить с цитированием
  #17 (permalink)  
Старый 02.07.2017, 16:56
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Teamur
между сеттингом нового значения может быть что угодно
Например? Один пример уже провалился.
Сообщение от рони
у ТС изначально один вопрос
Мне интересно "Юзаж" этого, но ТС сам не знает.
Ответить с цитированием
  #18 (permalink)  
Старый 02.07.2017, 16:59
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Teamur
реализовать именно такой синтаксис
Про синхронный код я уже писал, вот реализуй 1000 строк кода и проверь, если сомневаешься.
Ответить с цитированием
  #19 (permalink)  
Старый 02.07.2017, 17:06
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Rise,
Что угодно, кроме действий, которые сделают Elem не доступным в переменной txt.

Кроме того, переменную txt нужно жестко привязать именно к Elem.
И запретить присвоение переменной чего-либо, кроме СТРОКИ.
Ответить с цитированием
  #20 (permalink)  
Старый 02.07.2017, 17:14
Профессор
Отправить личное сообщение для Teamur Посмотреть профиль Найти все сообщения от Teamur
 
Регистрация: 08.06.2015
Сообщений: 206

Хотя бы теоретически можно реализовать синтаксис в посте #16?

Для меня главный вопрос сейчас не в том будет ли виснуть мой браузер, на моей тестовой страничке, а можно ли реализовать синтаксис?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить значение для переменной Nezumi.May Общие вопросы Javascript 4 18.03.2017 20:11
Как вставить значение переменной из списка внутри скрипта zoldiar Общие вопросы Javascript 9 18.11.2016 09:54
Как получить значение переменной из игры на HTML5? Dimaz Общие вопросы Javascript 6 10.08.2014 16:27
Как ajax запрос присвоить переменной zeraid jQuery 23 08.03.2013 12:48
Присвоить значение ID переменной. Treekci Общие вопросы Javascript 7 18.03.2009 13:06