zoukankan      html  css  js  c++  java
  • 牛逼哄哄的对象深复制

    function cloneObj(source, target) {
      if (!target) {
        if (source.constructor === RegExp) {
          target = new RegExp(source.source, source.flags);
        } else {
          target = new source.constructor();
        }
      }
      var names = Object.getOwnPropertyNames(source);
      for (var i = 0; i < names.length; i++) {
        var desc = Object.getOwnPropertyDescriptor(source, names[i]);
        if (typeof desc.value === "object" && desc.value !== null) {
          var values = cloneObj(desc.value);
          Object.defineProperty(target, names[i], {
            enumerable: desc.enumerable,
            configurable: desc.configurable,
            writable: desc.writable,
            value: values
          });
        } else {
          Object.defineProperty(target, names[i], desc);
        }
      }
      return target;
    }

    注:这个方法不能复制DOM和二进制流。

  • 相关阅读:
    ThreadLocal内存泄漏真因探究(转)
    JAVA设计模式工厂模式
    java设计模式单例模式
    Java-Socket
    Java-Queue总结
    Java-Reentrantlock
    Java-Iterator遍历集合
    安装和启动docker
    C# System.Reflection.Assembly动态加载资源文件
    C#调用 kernel32.dll
  • 原文地址:https://www.cnblogs.com/wuqilang/p/11204677.html
Copyright © 2011-2022 走看看