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;  
      };
posted @ 2018-08-31 15:18  Noreasonup  阅读(184)  评论(0编辑  收藏  举报