코드는 다음과 같습니다. (원래 프로토타입을 기반으로 캡슐화했는데, 코드량이 완전 늘어나는 걸 발견해서 다시 바꿨습니다.)
붙여넣을 때 문제를 제기해주신 Sparks345님께 감사드립니다
이 경우 onpropertychange, oninput, obj.watch("value",function(id,oval,nval){})에 몇 가지 이벤트만 더 추가할 수 있습니다.
여기에서 자세한 내용과 입력 추적을 볼 수 있습니다. 값 변경 및 호환 처리