2015-11-18 64 views
0

讓你有一幫您已經在上漲的方法來你的包中強調:如何在不引入全局的情況下將方法混入下劃線?

_.mixin({ 
    foo: function() {}, 
    bar: function() {} //etc 
}); 

,但你不想冒險與主應用程序或其它包衝突的,什麼是防止,最好的辦法?

2個選項我正在考慮在我的方法或克隆是增加了一些下劃線強調到不同的主角,如:U.foo,但是當你通過克隆它:

U = _; 
_.extend(U, _) 

都û和_讓你的方法時,你現在要做的:

U.mixin({ 
    foo: function() {} 
}); 

無需增加額外的代碼,這將增加文件大小,我有什麼其他選擇?

回答

1

創建返回所有單獨的功能道具單一的功能:

_.mixin({ 
 
    ns:function(){ 
 
     return { 
 
      baz:function(){ 
 
       document.write('baz'); 
 
      } 
 
     } 
 
    } 
 
}); 
 
_.ns().baz();
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

現在所有的功能都有自己的命名空間ns

+0

那麼這能夠完成任務!不錯的工作。仍然寧願找到一種方法來替換主角,因爲這非常冗長。有任何想法嗎?將baz的返回分配給另一個var? –

+0

實際上並不工作,您無法訪問任何其他下劃線方法。如果你這樣做,我想知道鏈是否會繼續工作? –

相關問題