dojo是否有像jQuery.extend这样的深度混合?

时间:2012-06-05 07:52:49

标签: dojo

我知道jQuery有深层混合,例如

var options = $.extend(true,target,object1,object2)

,dojo有吗?如果有如何使用?如果不能,我怎么能获得相同的功能?谢谢!

2 个答案:

答案 0 :(得分:0)

他们有“lang.mixin”(http://livedocs.dojotoolkit.org/dojo/_base/lang#mixin),但它并不是真正等同的。

以下主题有更多信息: http://dojo-toolkit.33424.n3.nabble.com/Deep-dojo-mixin-td3986157.html

Ken Benjamin花时间写这篇文章:

    mixinDeep: function(dest, source) { 
     //Recursively mix the properties of two objects 
     var empty = {}; 
     for (var name in source) { 
          if(!(name in dest) || (dest[name] !== source[name] && (!(name in empty) || empty[name] !== source[name]))){ 
               try { 
                    if ( source[name].constructor==Object ) { 
                         dest[name] = this.mixinDeep(dest[name], source[name]); 
                    } else { 
                         dest[name] = source[name]; 
                    }; 
               } catch(e) { 
                    // Property in destination object not set. Create it and set its value. 
                    dest[name] = source[name]; 
               }; 
          }; 
     } 
     return dest; 
} 

但是,它对阵列有一些限制。

答案 1 :(得分:0)

我最近遇到了同样的问题并决定创建Jake,这只是一个移植到Dojo不提供的jQuery函数的小文件。所以,现在我可以在我的Dojo应用程序中使用它(以及在任何其他我不能使用jQuery的情况下)。

随意使用它来放入你的项目。

目前支持:

  • 延伸
  • 每个
  • 偏移