南遥云 2017-05-05 14:26 采纳率: 0%
浏览 1139
已结题

JavaScript如何深度克隆函数对象!

JavaScript如何深度克隆函数对象 在js中函数是对象有属性 但是要怎样做才能让函数对象拷贝出一个完整的副本

  • 写回答

2条回答 默认 最新

  • followwwind 2017-05-05 15:22
    关注

    //深度克隆
    function deepClone(obj){
    var result,oClass=isClass(obj);
    //确定result的类型
    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);
    }
    var oPerson={
    oName:"rookiebob",
    oAge:"18",
    oAddress:{
    province:"beijing"
    },

    ofavorite:[
    "swimming",
    {reading:"history book"}
    ],
    skill:function(){
    console.log("bob is coding");
    }
    };
    //深度克隆一个对象
    var oNew=deepClone(oPerson);

    oNew.ofavorite[1].reading="picture";
    console.log(oNew.ofavorite[1].reading);//picture
    console.log(oPerson.ofavorite[1].reading);//history book

    oNew.oAddress.province="shanghai";
    console.log(oPerson.oAddress.province);//beijing
    console.log(oNew.oAddress.province);//shanghai
    具体参考http://www.cnblogs.com/jq-melody/p/4499333.html,很详细很全面

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型