jquery深度克隆javascript对象

利用jquery 的extend方法:
extend([param1,]obj1,obj2); 
说明:1.>将对象obj2复制到obj1中

2>param1,为布尔类型,true 表示深度复制 
eg:

  1. var object1 = {
  2. apple: 0,
  3. banana: {weight: 52, price: 100},
  4. cherry: 97
  5. };
  6. var object2 = {
  7. banana: {price: 200},
  8. durian: 100
  9. };
  10. $.extend(true,object1, object2);//深度复制,要复制以个新对象,可将object1写成{}
  11. object2.banana.price=100;//修改值
  12. alert(object1.banana.price)//深度复制,object1中的值没有改变

javascript 实现:

  1. function cloneObject(obj) {
  2. var clone = {};
  3. for(var i in obj) {
  4. if(typeof(obj[i])=="object")
  5. clone[i] = cloneObject(obj[i]);
  6. else
  7. clone[i] = obj[i];
  8. }
  9. return clone;
  10. }

eg:

    1. function cloneObject(obj) {
    2. var clone = {};
    3. for(var i in obj) {
    4. if(typeof(obj[i])=="object")
    5.     var object1 = {
    6. apple: 0,
    7. banana: {weight: 52, price: 100},
    8. cherry: 97
    9. };
    10. var  obj= cloneObject(object1 );
    11. object2.banana.price=200;//修改值
    12.     alert( obj.banana.price )//仍然输出100
时间: 2024-10-29 19:06:20

jquery深度克隆javascript对象的相关文章

JS对象的深度克隆——JavaScript代码实现

1 function clone(Obj) { 2 var buf; 3 if (Obj instanceof Array) { 4 buf = []; // 创建一个空的数组 5 var i = Obj.length; 6 while (i--) { 7 buf[i] = clone(Obj[i]); 8 } 9 return buf; 10 } 11 else if (Obj instanceof Object){ 12 buf = {}; // 创建一个空对象 13 for (var k

深度克隆(对象、数组)--------百度IFE前端task2

var srcObj = { a: 1, b: { b1: ["hello", "hi"], b2: "JavaScript" }}; console.log(srcObj);var clone1 = cloneObject(srcObj); function cloneObject(src) { var clone = {}; for(var item in src){ if(typeof(src[item])=='object' ){ if(

javascript中对象的深度克隆

零.寒暄 又是一个月多月没有更新博客了,这段时间回学校处理下论文的事情,实习的生活也暂时告一段落(在公司上班,才发现学校里面的生活简直如天堂一般,相信很多已经毕业的小伙伴肯定被我说中了,说中了请给本文点个赞,哈哈!).希望接下来自己的更新进度能加快,马上又是一年校招时,被虐也好.大牛虐别人也罢,总之祝福各位今年要找工作的小伙伴们好运.那么,今天就聊一下一个常见的笔试.面试题,js中对象的深度克隆.翻了下这个题目,在很多地方出现过,已经算一个老的题目了,但是每年的校招中总会考到,其实想想,这个题目

javascript对象的深度克隆

在做项目的时候需要向对象里面添加新属性,又不想修改原对象.于是就写: var newObj = oldObj,但是新对象属性改变后就对象也会跟着改变,这是因为无论是新对象还是旧对象,指向的内存地址都是一样的,改变了谁都改变了 内存中的数据. 于是找到了一个取巧的方法就是先把旧对象转化为字符串 然后 在转化为对象给新对象,虽然可以达到效果,但是总感觉有点不正规.于是想到了深度克隆 function cloneObjectFn (obj){ // 对象复制 return JSON.parse(JSO

js学习随笔一:对象简单、深度克隆(复制)

javascript的一切实例都是对象,只是对象之间稍有不同,分为原始类型和合成类型.原始类型对象指的是字符串(String).数值(Number).布尔值(Boolean),合成类型对象指的是数组(Array).对象(Object).函数(Function). 既然对象分为这两类,他们之间的最大差别是复制克隆的差别.普通对象存储的是对象的实际数据,而引用对象存储的是对象的引用地址,而把对象的实际内容单独存放,因为引用对象通常比较庞大,这是数据开销和内存开销优化的手段.通常初学者很难理解这部分内

JAVA对象的深度克隆

有时候,我们需要把对象A的所有值复制给对象B(B = A),但是这样用等号给赋值你会发现,当B中的某个对象值改变时,同时也会修改到A中相应对象的值! 也许你会说,用clone()不就行了?!你的想法只对了一半,因为用clone()时,除了基础数据和String类型的不受影响外,其他复杂类型(如集合.对象等)还是会受到影响的!除非你对每个对象里的复杂类型又进行了clone(),但是如果一个对象的层次非常深,那么clone()起来非常复杂,还有可能出现遗漏! 既然用等号和clone()复制对象都会对

深度克隆

如何使用原生 Javascript 代码深度克隆一个对象(注意区分对象类型) 对于深度克隆,我的理解是:在克隆或扩展一个对象时,当该对象是一个包括子对象的对象,也会遍历该子对象的属性并进行复制拷贝.所以深度克隆适用于对象的属性也是对象的情况. 贴出js代码: /** * 深度扩展对象--适用于对象的属性也是对象的情况 * @param {Object} * @return {Object} */ var deepextend = function (destination, source) {

JavaScript实现对象的深度克隆【简洁】【分享】

JavaScript实现对象的深度克隆 代码实现如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>clone</title> 6 7 <script type="text/javascript"> 8 //对象深度克隆方法 9 10 11 ////

jquery 对象数组的克隆和深度克隆

var obj1 = $.extend(false, {}, obj2);  //对象克隆 var obj1 = $.extend(true, {}, obj2);   //对象深度克隆 ----------------------------把{} 换成了[]--------------- var obj1 = $.extend(false, [], obj2);    //数组克隆 var obj1 = $.extend(true, [], obj2);    //数组深度克隆 所谓的深度就