js对象的深拷贝

//JS对象深拷贝
        var clone = function (obj) { 
          if(obj === null) return null 
          if(typeof obj !== 'object') return obj;
          if(obj.constructor===Date) return new Date(obj); 
          var newObj = new obj.constructor ();  //保持继承链
          for (var key in obj) {
              if (obj.hasOwnProperty(key)) {   //不遍历其原型链上的属性
                  var val = obj[key];
                  newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; // 使用arguments.callee解除与函数名的耦合
              }
          }  
          return newObj;  
      };
原文地址:https://www.cnblogs.com/noreason/p/9566002.html