2013-10-30 2 views
0

변수가 증가 할 때마다 이벤트를 트리거하고 싶습니다. 그게 가능하니?+++ 연산자에 바인드

var a = 0; 

// if this variable gets incremented ++ to 1, I want to trigger an event. 
// how can I create listener for it? 

Google은 도움을받지 않았습니다.

+1

원시 유형에는 사용할 수 없습니다. 개체를 사용할 때만 가능하며 다른 메서드를 사용하여 증분하는 경우에만 가능합니다. 너는 무엇을 이루려고하니? –

+1

더티, 끔찍한, 해킹과 신뢰할 수없는 방법은 setTimeout 루프에서 변수를 모니터링하는 것입니다. – xbonez

+0

개인 변수가이 변수의 증가분에 따라 자동으로 트리거되기를 원합니다. – amit

답변

1

예제와 직접적으로 같을 수는 없습니다.

하지만, 값이 객체 인 경우, 당신은 값이 변경 될 때 알고 defineProperty를 사용하여 setter을 사용할 수 있습니다 당신은 사용하여 개체의 변경을들을 수 있습니다, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

을 결국 Object.observehttp://updates.html5rocks.com/2012/11/Respond-to-change-with-Object-observe

기존에

지원

참고생각하는 브라우저은 이전 브라우저에서 작동하지 않습니다.

이전 버전을 지원해야하는 경우 객체 값을 변경하고 메소드에서 원하는 것을 수행 할 수있는 인터페이스를 만들 수 있습니다 (예 : myInt.increment()). (이 패턴은 백본, 엠버 및 기타 내부에서 사용됨)

또는 루프 (setTimeout)를 실행하고 캐시 된 이전 값과 새 값을 비교하여 더러운 검사를 수행 할 수 있습니다. Angular.js)

+0

Object.observe는 구형 브라우저에서 작동하지 않을 것이라고 생각합니다. – amit

+0

레거시 지원에 대한 의견을 추가했습니다. –

+0

와우, 각도 루프에서 폴링을 사용 하시겠습니까? 알고있는 것이 좋다. – Kos