2014-06-11 82 views
0

我有一個對象的單例實例,它有一個方法m1,調用m2,調用m3 ...依此類推直到m10優化參數發送到多種方法的方式

有一組參數,我發送到m1和僅用於m10。但我最終將這些參數傳遞給m2 ... m9,儘管它們沒有被這些方法使用。我也不能直接從m1撥打m10,因爲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'?它將允許你用'arguments'對象調用一個方法,而不用明確地命名每個方法 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply。希望我不會誤解 – Ian

+0

爲什麼不讓這些對象的這些參數屬性根據需要進行注入? –

+0

@HenriqueBarcelos如果我使它們成爲對象的屬性,那麼它們的作用域就成爲這個單一對象的範圍,它是整個應用程序生命週期的範圍。我希望它的範圍是每個'm1'方法的調用。 – Tushar

回答

0

我發現了一個解決方案,它是通過使用lodash的bindKey方法。它正在做我所需要的。