2015-11-18 39 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

实际上并不工作,您无法访问任何其他下划线方法。如果你这样做,我想知道链是否会继续工作? –

相关问题