login register Sysop! about ME  

2017년 12월 14일 03시 06분 00초,     조회수 : 2024
  제목 : javascript override 흉내내기
SEQ : 1667 글쓴이 : hanhead

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

다 아시는 내용일 수도 있겠네요. 

원래 함수를 포함해서 이름이 다른 함수를 만드는 예는 좀 있는데
해당 함수자체를 override할 수 있는 팁이 별도로 없는 듯합니다.

그래도 뒷북이 아닌가 싶기는 하지만 검색을 해봐도  정리되어져 있는 팁이 제대로 없는 것 같아서 올려봅니다.

예제로 parseFloat을 override하는 것을 만들어보았습니다.

아래의 예제는 프로젝트를 진행하는데 사용한 parseFloat를 숫자를 parse하고 javascript 연산하는데 있어서
1,000처럼 중간에 ,가 있는 경우 제대로 parse가 되지 않는 문제가 있었습니다.
엉뚱하게 결과가 '1,000'의 경우는 숫자 1로 인식합니다.

해당 문제가 있을 경우 모든 parseFloat을 사용한 코딩을 다 바꾸는 것이 곤란하여 parseFloat 자체를 좀 손봐서 ,를 제거하고 
원래의 parseFloat으로 처리하는 아래와 같은 코딩을 모든 페이지에 공통적으로 사용하는 .js 파일에 해당 내용을 포함한 예제
입니다.

{
    var _parseFloat = parseFloat;
    parseFloat = function (s) {
        if (!isNullOrWhitespace(s)) {
            s = new String(s);
            s = s.replace(/,/g, '');
            s = _parseFloat(s);
        }
        else {
            s = 0;
        }

        return s;
    };
}


참고로 중간에 나오는 isNullOrWhitespace라는 함수는 제가 별도로 만든 함수입니다. 단지 이해를 돕기 위한 example이라 
해당 함수까지 나열하는 것이 핵심에서 벗어나는 것 같아서 포함하지 않았습니다.

  hskim618
  2017-12-17(16:00)
캐릭 이미지
한동안 글이 안 올라왔었는데(?) 오랜만에 노우하우 공유 감사합니다.
약간 설명을 덧붙이면, 이것은 Proxy Pattern으로 알려진 방법입니다.
예를 들어 기본 alert를 예쁜 alert으로 코드 수정없이 변경할 때 사용하곤 합니다.

  hskim618
  2017-12-17(16:05)
캐릭 이미지
Proxy Pattern은 여러가지 방법으로 구현할 수 있습니다.
그리고 동기 함수를 비동기 함수로 만드는 경우나 그 반대인 경우
사용에 주의가 필요합니다.

아래 스택오버플로우 글을 참고하시면 좋을 것 같습니다.
https://stackoverflow.com/questions/1729501/javascript-overriding-alert



제목 작성자 날짜 조회
javascript override 흉내내기 (2) hanhead 2017-12-14 2024

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})