가능한 중복 :
detect variable change in javascriptJS/jQuery를 변수 schange 이벤트
어떻게 내가 내 변수가 변경된 것을 발견 할 수 있습니까?
내 변수가 예를 들어 == 1 일 때마다 수행되는 이벤트가 있습니다. 변수가 변경 될 때만 수행하려고합니다.
가능한 중복 :
detect variable change in javascriptJS/jQuery를 변수 schange 이벤트
어떻게 내가 내 변수가 변경된 것을 발견 할 수 있습니까?
내 변수가 예를 들어 == 1 일 때마다 수행되는 이벤트가 있습니다. 변수가 변경 될 때만 수행하려고합니다.
당신은 할 수있다 (the ECMAScript5 specification의 새로운) 언어의 새로 표준화 된 부분 인 속성 setter 통해. 그것은 오래된 변수 나 속성이 아니라 객체에 대한 setter로 정의 된 속성에서만 작동합니다. 단지 구글 크롬에있다
var obj = {};
Object.defineProperty(obj, "foo", (function(){
var value = 42;
function fooGet() {
display("Getting: " + value);
return value;
}
function fooSet(newValue) {
display("Setting: " + newValue);
value = newValue;
}
return {
get: fooGet,
set: fooSet
};
})());
Live example,하지만 내가 생각 ECMAScript5 속성을 지원하는 브라우저에서 작동 : 여기
는 게터와 세터 모두와foo
속성 오브젝트의 예 순간
물론, 속성보다는 getter 및 setter 함수를 직접 사용하십시오. :-)
단순 : 프리미티브 변수를 사용하지 말고 값을 변경하는 "setter"메서드가있는 객체를 사용하십시오. setter에서 추가 코드를 호출 할 수 있습니다.
프리미티브에서는이를 수행 할 수 없습니다. 유일한 방법은 객체에 변수를 캡슐화하고이 객체에 사용자 정의 이벤트를 추가하는 것입니다.
예제를 보여줄 수 있습니까? – TRAVA
setInterval
메서드를 사용하면 변수 값을 주기적으로 확인하고 필요한 경우 물건을 수행 할 수 있습니다.
하지만 좋은 해결책은 아닙니다. 다른 제안이 더 좋습니다.
http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
EDIT :
checkVariable(myVar)
3 초마다 실행된다
var myVar = 0;
var intervalId = setInterval('checkVariable(myVar);', 3000);
function checkVariable(theVar) {
if (theVar == 1) {
alert('Variable is 1.');
}
}
.
예제를 보여줄 수 있습니까? – TRAVA
@ T.J. 나는 @Aaron이 같은 무언가를 객체를 제안 생각 : 감시
var myVar = new Watched(1, function (newValue) { alert(newValue) });
myVar.add(2); // alert(3);
myVar.add(10); // alert(13)
은 업데이트 한 말을 콜백을 발사 방법으로 업데이트되는 내부 값을 유지한다.
편집 :
좋아 어쩌면 @Aaron이 :)
내가 마음에이 같은 매우 간단한 일을했다생각하지 무엇을 :
function Watched (initVal, cb) {
var value = initVal;
function add (val) {
value += val;
cb(value);
}
// return public methods
return { add: add };
}
가 유 예를 게재 할 수 있습니까? – TRAVA
http : // stackoverflow를 참조하십시오.com/questions/1759987/detect-variable-change-in-javascript for code. –