javascript - JS浅拷贝时遇到的一个问题

查看:70
本文介绍了javascript - JS浅拷贝时遇到的一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

   var extend = function (target, source) {
      for (var key in source) {
         target[key] = source[key];
      }
   };

   var target = {name: 'target', skill: 'JS'};
   var source = {name: 'source', friends: ['小明', '小宋']};
   extend(target, source);
   
    **疑问:为什么这里的 friends 提前变化了**
   console.log(target.friends); // ["小明", "小宋"]
   console.log(target); // {name: "source", skill: "JS", friends: [1, 2]} 

   target.name = 'tom';
   target.skill = 'PHP';
   target.friends = [1, 2];
   console.log(target.friends); // [1, 2]
   console.log(target); // {name: "tom", skill: "PHP", friends: [1, 2]}

解决方案

这是chrome console的问题,之前的log会被后面的语句刷新,你debug,单步调试的时候就不会有这个问题了。

这篇关于javascript - JS浅拷贝时遇到的一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆