我知道 jQuery 有深度混合,例如
var options = $.extend(true,target,object1,object2)
,dojo 有吗?如果有如何使用?如果没有,我怎样才能获得相同的功能?谢谢!
我知道 jQuery 有深度混合,例如
var options = $.extend(true,target,object1,object2)
,dojo 有吗?如果有如何使用?如果没有,我怎样才能获得相同的功能?谢谢!
他们有“lang.mixin”(http://livedocs.dojotoolkit.org/dojo/_base/lang#mixin),但它并不是真正的等价物。
以下线程有更多信息: http ://dojo-toolkit.33424.n3.nabble.com/Deep-dojo-mixin-td3986157.html
肯本杰明花时间写了这个:
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;
}
但是,它对数组有一些限制。
我最近遇到了同样的问题,并决定创建Jake,它只是一个移植 Dojo 不提供的 jQuery 函数的小文件。所以,现在我可以在我的 Dojo 应用程序中使用它(以及在我不能使用 jQuery 的任何其他情况下)。
随意使用它来加入您的项目。
目前支持: