Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2012, 22:52
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

событие при изменении значения переменной
Здравствуйте.
Необходимо выполнить функцию при изменении значения переменной. Существуют ли какие-нибудь события или другие реализации, позволяющие сделать это.
Я попробовал написать функцию, но столкнулся с невозможностью в JS передать переменную по ссылке.
Просьба упоминать о кроссбраузерных несовместимостях и способах их устранения.
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 17.03.2012, 23:44
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Раед
Необходимо выполнить функцию при изменении значения переменной.
Не совсем ясно, что вы хотите. Покажите код.
Сообщение от Раед
попробовал написать функцию, но столкнулся с невозможностью в JS передать переменную по ссылке.
Можно частично эмулировать это поведение с помощью вызова объекта в контексте другого, используя методы call/apply
Ответить с цитированием
  #3 (permalink)  
Старый 17.03.2012, 23:49
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от monolithed
Не совсем ясно, что вы хотите. Покажите код.
конкретного кода нет, но например
var x=15;
x.onchange = function() {//вешаем обработчик
 alert(this);
}
x = 64//и вот сейчас он (обработчик) должен сработать и вывести alert'ом 64
Ответить с цитированием
  #4 (permalink)  
Старый 18.03.2012, 00:21
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Поставите таймер, или привяжите свойство к таким методам как:
DOMAttributeNameChanged
DOMAttrModified

Т.е. свяжите эту переменную с атрибутом к.л. элемента, и когда переменная изменится то сработает событие, по нему уже легко двигаться дальше.

Последний раз редактировалось monolithed, 18.03.2012 в 00:24.
Ответить с цитированием
  #5 (permalink)  
Старый 18.03.2012, 00:41
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Кроссбраузерная реализация watch()
Ответить с цитированием
  #6 (permalink)  
Старый 18.03.2012, 00:43
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от monolithed
Т.е. свяжите эту переменную с атрибутом к.л. элемента
что вы подразумеваете под словом "свяжите"
Ответить с цитированием
  #7 (permalink)  
Старый 18.03.2012, 00:47
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

DreamTheater,
большое спасибо, но как это применять к локальным переменным, то есть
function s() {
 var x=12
 //прослушка на x - как, свойством какого объекта он является?
}
s()
Ответить с цитированием
  #8 (permalink)  
Старый 18.03.2012, 01:05
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от Раед Посмотреть сообщение
DreamTheater,
большое спасибо, но как это применять к локальным переменным, то есть
function s() {
 var x=12
 //прослушка на x - как, свойством какого объекта он является?
}
s()
Используйте сеттер:
var x;

function setX(value) {
    x = value;

    fn();
}
Ответить с цитированием
  #9 (permalink)  
Старый 18.03.2012, 01:06
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Раед, никак. Можно отслеживать изменение только свойства объекта.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #10 (permalink)  
Старый 18.03.2012, 01:30
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Maxmaxmахimus
никак, они находятся в обьекте активации каждой функции к которому у программиста нет доступа
Кстати, я не понимаю, почему создатели спецификаций не замутят какой-нибудь объект, который хранит локальные переменные.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
событие, которое срабатывает при изменении DOM структуры amigo* Events/DOM/Window 30 11.04.2017 13:39
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
Как при каждом изменении переменной выводить её?? Tums37 Общие вопросы Javascript 2 08.10.2011 23:29
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Onchange при изменении значения из скрипта. abstract Events/DOM/Window 9 01.03.2011 23:10