js中如何复制一个对象并获取其所有属性和属性对应的值

 我来答
jack_wang0823
2016-11-05 · TA获得超过2957个赞
知道大有可为答主
回答量:4143
采纳率:87%
帮助的人:1456万
展开全部

如果是使用了  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;};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式