akushi
119
2016-01-28 12:34:44
5
2230

javascript object 의 값이 변경될 때 이벤트를 발생시킬 수 있는 방법이 있나요?


안녕하세요.


var data = {

    name: "apple"

    , price: 3000

}


위와 같은 객체 구조에서 name, price 등의 속성이 변경이 될 때를 감지하여 처리할 수 있는 방법이 있을까요?


실제 사용할 객체 구조는 data 처럼 단순하지 않고 복잡하게 사용됩니다.


떠오르는 방법은 getter, setter 를 구현하고 setter 에서 이벤트를 처리하는 것 밖에 떠오르지

않네요.

이렇게 할 경우 getter, setter 를 생성하는 코드를 작성해야하고

data 객체를 서버로 넘길 때 다시 getter, setter 는 제거하거나 순수 속성만 뽑아서

다시 가공해야하고 하는 등등의 이유로 꺼려지네요.


혹 방법이 있을까요?


고맙습니다.


0
  • 답변 5

  • fender
    26k
    2016-01-28 12:45:49

    'MutationObserver'를 검색해보세요.

  • 오로롱이
    1k
    2016-01-28 13:30:25

    이건 스크립트 프레임워크 써야 할 듯

    기본적인 자바스크립트로는 구현하기 힘들걸요?

    혹시 WPF mvvm 구조 보시고 스크립트에 적용하시려고 하는거?

  • akushi
    119
    2016-01-28 13:44:17

    // fender
    답변고맙습니다.
    MutationObserver 로 찾아보니 딱 제가 원하는 기능이더군요. 그런데 IE는 11부터 지원하는 것 같아서 사용하기 어려울 것 같아요ㅠㅠ Object.observe() 도 동일한 기능인것 같은데 역시 IE는 지원하지 않더라구요.


    // 오로롱이

    답변고맙습니다.

    WPF는 아니고, 웹 시스템 개발 중 form 구조가 너무 복잡해져서 기본 데이터를 JSON 형태로 가지고 있고, JSON과 연결되는 form 데이터를 동기화하기 위해서 사용하려고 합니다. 사용자가 form 값을 변경하면 자동으로 JSON 데이터를 변경하고, 그 반대로 로직에서 JSON 데이터를 변경할 경우 사용자에게 노출되는 form 데이터를 바로 바꾸려는 것이지요.


  • fender
    26k
    2016-01-28 13:46:08

    akushi // 보통 그럴 때는 해당 라이브러리의 'polyfill'을 찾아보면 됩니다.

  • akushi
    119
    2016-02-01 08:23:13
    오! polyfill 이라는 개념이 있었군요! 연관해서 찾아보니 다양한 자료들이 나오네요! 답변 고맙습니다! :)
  • 로그인을 하시면 답변을 등록할 수 있습니다.