js深拷贝一个对象

var clone = function (obj) { 
    if(obj === null) return null 
    if(typeof obj !== 'object') return obj;
    if(obj.constructor===Date) return new Date(obj); 
    if(obj.constructor === RegExp) return new RegExp(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;  
};

如果只是浅层次的对象 如:

var fence_form = {
        add_name: "", //名称
        point: "", //点
        radius: "", //半径
        time: [], //有效时间
        merArr: []
}

则用下面这个方法比较简单 :

var a = {name:'wanger'}
var b = Object.assign({}, a)
a===b // false

 

你可能感兴趣的:(js)