2010-06-16 4 views

ответ

12

Ehm?

var testVariable = 10; 
var oldVar = testVariable; 

... 
if (oldVar != testVariable) 
alert("testVariable has changed!"); 

И нет, нет никакого волшебного "var.hasChanged()", ни "var.modifyDate()" в JavaScript, если вы не закодировать его самостоятельно.

1

Если вы пользователь firefox, вы можете проверить его с помощью firebug. Если вы используете IE, мы можем поставить предупреждения и проверить значения переменных.

-1

Сопоставив его в известном состоянии, чтобы узнать, отличается ли он. Если вы ищете что-то вроде variable.hasChanged, я уверен, что этого не существует.

4

Существует способ, чтобы наблюдать переменные изменения: Object::watch - некоторый код ниже

/* 
For global scope 
*/ 

// won't work if you use the 'var' keyword 
x = 10; 

window.watch("x", function(id, oldVal, newVal){ 
    alert(id+' changed from '+oldVal+' to '+newVal); 

    // you must return the new value or else the assignment will not work 
    // you can change the value of newVal if you like 
    return newVal; 
}); 

x = 20; //alerts: x changed from 10 to 20 


/* 
For a local scope (better as always) 
*/ 
var myObj = {} 

//you can watch properties that don't exist yet 
myObj.watch('p', function(id, oldVal, newVal) { 
    alert('the property myObj::'+id+' changed from '+oldVal+' to '+newVal); 
}); 


myObj.p = 'hello'; //alerts: the property myObj::p changed from undefined to hello 
myObj.p = 'world'; //alerts: the property myObj::p changed from hello to world 

// stop watching 
myObj.unwatch('p'); 
+0

Не поддерживается в IE и Safari. – bezmax

1

Использование getters и setters:

var _variable; 
get variable() { 
    return _variable; 
} 
set variable(value) { 
    _variable = value; 
    // variable changed 
} 

или, если вам не нужно значение переменной позже:

set variable(value) { 
    // variable changed 
} 
Смежные вопросы