原生js实现复制对象、扩展对象 类似jquery中的extend()方法
jq的extend()方法能很方便的实现扩展对象方法,语法如下:$.extend(obj1,boj2,obj3);
现在要实现的是:原生js实现复制对象,扩展对象,类似jq中的extend()方法,具体实例如下:
现有3个对象字面量:
varo1={hello:1,old:555}, o2={ abc:55555555, hello:2, fun:function(){ alert(111); } }, o3={third:9999};
实现目标:
复制o1对象,把o2,o3的对象属性和方法都扩展进前面复制得到的对象中并输出。
<script> varo1={hello:1,old:555}, o2={ abc:55555555, hello:2, fun:function(){ alert(111); } }, o3={third:9999}; functioncloneObj(oldObj){//复制对象方法 if(typeof(oldObj)!='object')returnoldObj; if(oldObj==null)returnoldObj; varnewObj=newObject(); for(variinoldObj) newObj[i]=cloneObj(oldObj[i]); returnnewObj; }; functionextendObj(){//扩展对象 varargs=arguments; if(args.length<2)return; vartemp=cloneObj(args[0]);//调用复制对象方法 for(varn=1;n<args.length;n++){ for(variinargs[n]){ temp[i]=args[n][i]; } } returntemp; } vart=extendObj(o1,o2,o3); console.log(t); console.log(o1); console.log(o2); console.log(o3); </script>