js如何复制一个对象的值

JavaScript045

js如何复制一个对象的值,第1张

可以利用JS中的for in语法进行处理,具体如下:

//要复制的原对象

var destobj={ colkey: "col", colsinfo: "NameList" }

//复制的目标对象

var myobj=new Object()

for(var om in myobj)

{

var name=om//属性名称

var value=destobj[om]//属性对应的值

myobj[name]=destobj[om]

}

如果是使用了  JQ  EXTJS 的话本身就有 对象克隆的 函数库可以使用  如 extjs 使用

ext.ux.util.clone()

没有用这些的话 可以自己写一个 克隆函数  网上有资源  比如

function deepClone(obj){    var result={},oClass=isClass(obj)

    // if(oClass==="Object"){

    //     result={}

    // }else if(oClass==="Array"){

    //     result=[]

    // }else{

    //     return obj

    // }

    for(key in obj){

        var copy=obj[key]

        if(isClass(copy)=="Object"){

            result[key]=arguments.callee(copy)

        }else if(isClass(copy)=="Array"){

            result[key]=arguments.callee(copy)

        }else{

            result[key]=obj[key]

        }

    }

    return result

}

function isClass(o){

    if(o===null) return "Null"

    if(o===undefined) return "Undefined"

    return Object.prototype.toString.call(o).slice(8,-1)

}

或者参考 extjs 的方法

 function(o) {  

   if(!o || 'object' !== typeof o) {        return o    }   

    if('function' === typeof o.clone) {        return o.clone()    }   

     var c = '[object array]' === object.prototype.tostring.call(o) ? [] : {}

     var p, v    

     for(p in o) {       

      if(o.hasownproperty(p)) {            v = o[p]           

      if(v && 'object' === typeof v) {               

       c[p] = ext.ux.util.clone(v)          

         }     else {          

               c[p] = v          

           }        

           }   

            }  

        return c}