zoukankan      html  css  js  c++  java
  • 深度克隆

    如何使用原生 Javascript 代码深度克隆一个对象(注意区分对象类型)

    对于深度克隆,我的理解是:在克隆或扩展一个对象时,当该对象是一个包括子对象的对象,也会遍历该子对象的属性并进行复制拷贝。所以深度克隆适用于对象的属性也是对象的情况。

    贴出js代码:

    复制代码
       /**
        * 深度扩展对象--适用于对象的属性也是对象的情况
        * @param {Object}
        * @return {Object}
        */
        var deepextend = function (destination, source) {
            for (var property in source) {
                var copy = source[property]; // 获取source属性值
    
                if (destination === copy) {
                    continue;
                }
    
                // 如果copy是一个对象,则递归调用(并传入copy参数),直到copy不是一个对象为止
                if (typeof copy === 'object') {//$.isObj(copy)
                    destination[property] = arguments.callee(destination[property] || {}, copy); //递归调用
                // 否则直接把copy赋值给destination对象的属性(此时与$.extend方法等价)
                } else {
                    destination[property] = copy;
                }
            }
            return destination;
        };
  • 相关阅读:
    js 运算符优先级
    原生js获取样式
    RGBA 与opacity
    闭包(自己的学习+理解~~水水的)
    css 单位-px、em、rem、百分比
    js之正则1
    querySelector和querySelectorAll
    关于瀑布流的算法(转淘宝ued)
    瀑布流的几个注意点
    jsonp跨域
  • 原文地址:https://www.cnblogs.com/zhangwenkan/p/4263346.html
Copyright © 2011-2022 走看看