zoukankan      html  css  js  c++  java
  • deepCopy深拷贝

    function deepCopy(p,c){
                var c = c || {};
                for ( var i in p ){
                    //确保属于自己的属性
                    if ( p.hasOwnProperty( i ) ){
                        //判断属性是否为对象
                        if ( typeof p[i] === 'object' ){
                            //ES3没有isArray()方法,兼容写法
                            if (typeof Array.isArray !== 'function' ){
                                Array.isArray = function( candidate ){
                                    return Object.prototype.toString.call( candidate ) === '[object Array]';
                                }
                                //如果是数组创建新数组,如果不是创建新对象
                                c[i] = Array.isArray( p[i] ) ? [] : {};
                            }else {
                                c[i] = Array.isArray( p[i] ) ? [] : {};
                            }
                            //通过递归,进行再一次遍历,直到typeof p[i]不是对象,然后逐层返回
                            deepCopy(p[i], c[i]);
                        }else {
                            c[i] = p[i];
                        }
                    }
                }
                return c;
            };
  • 相关阅读:
    GO 函数的参数
    GO 函数
    GO 指针
    GO 结构体
    GO 接口
    码云git常用命令
    GO Map的初步使用
    GO Slice
    GO 数组
    GO 键盘输入和打印输出
  • 原文地址:https://www.cnblogs.com/jokes/p/10516827.html
Copyright © 2011-2022 走看看