2014-06-11 2 views
0

m2 메서드를 호출하는 m1 메서드가있는 개체의 singleton 인스턴스가 있습니다.이 인스턴스는 까지 m3 ...을 호출합니다.매개 변수가 여러 메서드로 전송되는 방식 최적화

내가 m1에게 보내는 매개 변수 집합이 있으며 m10에 의해서만 사용됩니다. 하지만 결국이 매개 변수를 m2 ... m9으로 전달하지만 결국이 메서드로 사용되지는 않습니다. m10m1에서 직접 호출 할 수도 있습니다. 왜냐하면 m10에는 다른 매개 변수가 필요하기 때문입니다.

문제는 각 메소드에 이러한 불필요한 매개 변수를 전달하고 싶지 않다는 것입니다. 특히 내부에서 사용하지 않을 경우 더욱 그렇습니다. 클로저를 사용하여이 문제를 없애는 방법이 있습니까?

var singleTon = function(){}; 

    singleTon.prototype.m1 = function(a,b,c){ 
     this.m2(a,b,c); 
    }; 

    singleTon.prototype.m2 = function(a,b,c){ 
     this.m3(a,b,c); 
    }; 

    ... //Goes on till m9 

    singleTon.prototype.m10 = function(a,b,c,d,e){ 

     //Perform some operations with a,b,c,d,e 

    }; 
+0

매번 똑같은 매개 변수를 전달할 때 혼란 스럽습니다. 그렇다면 'Function.prototype.apply'을 사용하여 살펴 보았습니까? 명시 적으로 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply의 이름을 지정하지 않고도'arguments' 객체로 메소드를 호출 할 수 있습니다. 희망을 갖고 나는 오해하지 않는다. – Ian

+0

왜이 파라미터들을 객체의 속성으로 만들고 필요에 따라 주입하지 않는가? –

+0

@HenriqueBarcelos 내가 객체의 속성을 만들면 범위가이 전체 객체의 범위 인이 객체의 범위가됩니다. 'm1' 메소드를 호출 할 때마다 범위가 필요합니다. – Tushar

답변

0

로다시 (lodash)의 bindKey 방법을 사용하는 해결책을 발견했습니다. 그것은 내가 원하는 것을 정확히하고있다.

관련 문제