장식자 모드 시연

3861 단어 장식자 모드
오늘 갑자기 인테리어 모드를 하고 싶어요.
이 모델 행위는 대상에게 새로운 방법을 추가하고 대상의 원인을 바꾸지 않는 방법이 있는 기초 위에서 하는 것이다.
온라인에서 찾은 예제 코드는 다음과 같습니다.
function ABicycle(){ }
ABicycle.prototype = {
    wash : function(){ },
    ride : function(){ },
    getPrice : function(){ 
        return 999; 
    }
}

function bicycleBell( bicycle ){
    var price= bicycle.getPrice();

    bicycle.bell = function(){
        console.log("ding! ding! ding!");
    };

    bicycle.getPrice = function(){
            return price + 100;
    };
    return bicycle;
}

var bicycleA = new ABicycle();
bicycleA = bicycleBell( bicycleA );

 
나는 함수의 방법을 사용하고 함수의 원래 구조를 바꾸고 싶었다.
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title> —— </title>
        <script type="text/javascript">
            function a1(){
                return 3;
            }
            
            function addA(aFn){
                var c= aFn();
                aFn = function(){
                    return c + 2;
                }

            }
            
//            function addA(aFn){
//                var c= aFn();
//
//                var aFnName = aFn.name;
//                eval(aFnName +' = function(){return c + 2;}');
//
//            }
//            
            console.log(a1());
            addA(a1);
            console.log(a1());
        </script>
    </head>
    <body>
        
    </body>
</html>

코드 실행은 당연히 안 된다. 왜냐하면 함수와 숫자, 문자열은 모두 값 전달이기 때문이다.거꾸로 수조, 대상은 인용 전달.
사악한 eval로 주석을 빼면 돼.
이런 방법은 매우 나쁘다.프로그램이 예측하기 어려울 수도 있습니다.

좋은 웹페이지 즐겨찾기