mootools中有$merge方法能实现以下效果: var obj1 = {a: 0, b: 1};
var obj2 = {c: 2, d: 3};
var obj3 = {a: 4, d: 5};
var merged = $merge(obj1, obj2, obj3); //returns {a: 4, b: 1, c: 2, d: 5}, (obj1, obj2, and obj3 are unaltered)
var nestedObj1 = {a: {b: 1, c: 1}};
var nestedObj2 = {a: {b: 2}};
var nested = $merge(nestedObj1, nestedObj2); //returns: {a: {b: 2, c: 1}}
简单来说就是把几个对象的属性合并起来,难点就在于对象里面的属性是不确定的,可能无限嵌套。
var obj2 = {c: 2, d: 3};
var obj3 = {a: 4, d: 5};
var merged = $merge(obj1, obj2, obj3); //returns {a: 4, b: 1, c: 2, d: 5}, (obj1, obj2, and obj3 are unaltered)
var nestedObj1 = {a: {b: 1, c: 1}};
var nestedObj2 = {a: {b: 2}};
var nested = $merge(nestedObj1, nestedObj2); //returns: {a: {b: 2, c: 1}}
简单来说就是把几个对象的属性合并起来,难点就在于对象里面的属性是不确定的,可能无限嵌套。
解决方案 »
- xml文件 读取值
- 一个取页面上所有图片的问题,请教
- 怎么又循环了一次!!!!!!!
- 怎么把string 变成DOM对象?
- 如何引用AJAX传回来的元素属性
- SOA架构平台JUNO FOR JAVA,全面启动公测,web表现全面使用AJAX技术
- 一个很急的问题,JAVASCRIPT 操作数组变量,期待高手
- 在线等:我有两个文本框,一个放置当前的日期,格式为:2005.10.25,另一个放置一个月后的日期值,请问该如何写这个函数?
- 请教用JavaScript关闭窗口问题
- 按纽点击事件执行的javascript,怎样读取在服务器端生成的字符串?
- 如何解决因动态隐藏滚动条导致屏幕水平抖动问题,谢谢
- 简单的正则问题
function $merge()
{
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
if ( typeof target === "boolean" )
{
deep = target;
target = arguments[1] || {};
i = 2;
}
if ( typeof target !== "object" && target.toString() != "[object Function]" ) target = {};
if ( length == i )
{
target = this;
--i;
}
for ( ; i < length; i++ )
{
if ( (options = arguments[ i ]) != null )
{
for ( var name in options )
{
var src = target[ name ], copy = options[ name ];
if ( target === copy ) continue;
if ( deep && copy && typeof copy === "object" && !copy.nodeType )
target[ name ] = $merge( deep, src || ( copy.length != null ? [ ] : { } ), copy );
else if ( copy !== undefined )
target[ name ] = copy;
}
}
}
return target;
}; var obj = $merge(true, obj1, obj2, obj3, ......);
var target = [];if(!arguments[0]){
return null;
}
for(var i = 0;i < arguments.length;i++){
for(var p in arguments[i]){
target[p] = arguments[i][p];
}
}var tmp = [];for(var p in target){
tmp.push(p + ':' + target[p]);
}arguments[0] = eavl('{' + tmp.join(',') + '}');return arguments[0];
}
return t;