zoukankan      html  css  js  c++  java
  • javascript深度克隆函数deepClone

    javascript深度克隆函数deepClone

     function deepClone(obj) {
            var _toString = Object.prototype.toString;
    
            // null, undefined, non-object, function
            if (!obj || typeof obj !== 'object') {
                return obj;
            }
    
            // DOM Node
            if (obj.nodeType && 'cloneNode' in obj) {
                return obj.cloneNode(true);
            }
    
            // Date
            if (_toString.call(obj) === '[object Date]') {
                return new Date(obj.getTime());
            }
    
            // RegExp
            if (_toString.call(obj) === '[object RegExp]') {
                var flags = [];
                if (obj.global) { flags.push('g'); }
                if (obj.multiline) { flags.push('m'); }
                if (obj.ignoreCase) { flags.push('i'); }
    
                return new RegExp(obj.source, flags.join(''));
            }
    
            var result = Array.isArray(obj) ? [] :
                obj.constructor ? new obj.constructor() : {};
    
            for (var key in obj ) {
                result[key] = deepClone(obj[key]);
            }
    
            return result;
        }
    
        function A() {
            this.a = a;
        }
    
        var a = {
            name: 'qiu',
            birth: new Date(),
            pattern: /qiu/gim,
            container: document.body,
            hobbys: ['book', new Date(), /aaa/gim, 111]
        };
    
        var c = new A();
        var b = deepClone(c);
        console.log(c.a === b.a);
        console.log(c, b);

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

  • 相关阅读:
    Dom之标签增删操作
    Dom实例:数据自增、搜索框及跑马灯
    Dom选择器及操作文本内容
    Tkinter单选框及滚动条
    Tkinter颜色方案举例
    TKinter之窗口美化 窗口大小、图标等
    TKinter之文本域与多窗口
    TKinter之菜单
    JavaScript 基本语法
    TKinter的常用组件
  • 原文地址:https://www.cnblogs.com/mahmud/p/10236692.html
Copyright © 2011-2022 走看看