var china = {nation : '中国',birthplaces:['北京','上海','广州'],skincolor :'yellow',friends:['sk','ls']}//深复制,要想达到深复制就需要用递归functiondeepCopy(o,c){var c = c || {}for(var i in o){if(typeof o[i] === 'object'){//要考虑深复制问题了if(o[i].constructor === Array){//这是数组c[i] =[]}else{//这是对象c[i] = {}}deepCopy(o[i],c[i])}else{c[i] = o[i]}}return c;}var result = {name:'result'};result = deepCopy(china,result);console.dir(result);
1、通过JSON解析解决
var test ={name:{xing:{ first:'张',second:'李'},ming:'老头'},age :40,friend :['隔壁老王','宋经纪','同事']}var result = JSON.parse(JSON.stringify(test))result.age = 30result.name.xing.first = '往'result.friend.push('fdagldf;ghad')console.dir(test)console.dir(result)
问:在js中如何把一个对象里的属性和方法复制给另一个对象呢?
看一段代码:
var person={name:'zhou',age:24};
var son={sex:'男'};
functionclone(p,s){var s=s||{};//判断s对象是否存在,不存在则定义s为空对象for(var prop in p){s[prop]=p[prop];
};return s;//返回s对象
};
clone(person,son);