2013-09-28 7 views
2

JavaScript의 효율성과 관련하여 질문이 있습니다. 특정 회원을 감시하고, 변경시 함수를 실행하는 '감시자'를 만들고 싶습니다. I는 두 가지 방법을 보이면서 :효율성 - setInterval과 Object.watch

1) I 읽고 연속적

2) Object.watch

을 현재 값과 이전 값을 비교하여 변경에게있을 때 콜백를 발생 설정된 간격 그 Object.watch는 약간의 오버 헤드를 생성하지만 위의 방법 중 가장 효율적인 것으로 궁금한가요? 다른 방법이 있다면 알려 주시기 바랍니다!

+0

작성하고 실행하는 모든 코드는 "약간의 오버 헤드를 만듭니다". 실제 성능 문제가 있습니까? 그렇지 않은 경우 올바른 코드로 쉽게 연결되는 것을 선택하십시오. "X는 Y보다 효율적입니다"라고 말하면 서로 다른 성능 특성을 가진 완전히 다른 메커니즘 일 때 같은 일을 수행하는 경우가 거의 무의미합니다. – millimoose

+0

ㅎ, 실제로 "넌센스"가 아닙니다. 상용구 코드의 경우 알고리즘이 중요합니다. 그렇지 않으면, 그 위에 빌드 할 때 O (n^x) 복잡성으로 끝납니다. –

+0

알고리즘을 작성하지 않고 중요한 코드 경로에 있지 않으며, 이름 차이는 지수가 'O (n)'의 'n'값과 다를 경우 지나치게 멜로 드라마틱하게 나타나며 유일한 정보 당신은 "나는 약간의 오버 헤드에 대해 읽었습니다."그리고 나머지는 코드의 나머지 부분에 비해 무시할 만하다. 변경 알림을 발생시키는 메커니즘은 해당 알림을 기반으로 수행하는 것보다 훨씬 작을 수 있습니다. – millimoose

답변

2

또한 새 값을 설정 한 후 이벤트를 발생시키는 업데이트 함수에서 멤버를 래핑하고 코드의 다른 위치에서 이벤트를 수신 할 수 있습니다. 그것은 꽤 효율적입니다.

+0

이 방법이 더 좋습니다. –

+1

이것은 작동합니다. 키 - 값 쌍 인터페이스를 사용하여 멤버를 설정하는 프레임 워크의이 부분을 간단히 디자인 할 것입니다. –

0

(사이드 참고 : Object.watch()으로 Object.observe()이 FF 고유의 것입니다 사용해야합니다.)

을이이 가상 속성 메커니즘을 사용하고 자신의 세터를 제공하기 위해 많은 감각에 더 나은 다음 특정 부동산에 관한 경우. 확인 Object.defineProperty

+0

이것은 보일러 판 기능에 대한 것입니다. 매우 일반적인 것입니다. –