为了账号安全,请及时绑定邮箱和手机立即绑定

不懂下面这个js代码的加粗处,麻烦大神指点下,谢谢。

不懂下面这个js代码的加粗处,麻烦大神指点下,谢谢。

慕田峪8701529 2017-11-27 23:47:30
var a = {    key1:"11111"}function Copy(p, c) {  var c = c || {};  for (var i in p) {    if (typeof p[i] === 'object') {            c[i] = (p[i].constructor === Array) ? [] : {};            Copy(p[i], c[i]);    } else {            c[i] = p[i];    }  }  return c;}a.key2 = ['小辉','小辉'];var b={};b = Copy(a,b);     console.log(b) //  {key1: "11111", key2:  ['小辉','小辉']}    为什么会是这个结果?主要是不明白key2是怎么来的?
查看完整描述

3 回答

?
牛奶老哥哥

TA贡献204条经验 获得超92个赞

这不是拷贝嘛, 这里不是写了 a.key2 = ['小辉','小辉'];  b = Copy(a,b);  既然 b 拷贝了 a 的属性 key2 不就有了吗.

查看完整回答
1 反对 回复 2017-11-28
  • 慕田峪8701529
    慕田峪8701529
    其实我就是不明白,为什么这样写就可以让子对象没有影响到父对象a中的key2。
  • 慕田峪8701529
    慕田峪8701529
    在copy函数里直接写c[i]=p[i]不就行了么,为什么要加一个判断呢
?
qq_Dreamy_旧城_0

TA贡献24条经验 获得超2个赞

怎么来的就是他那边有自己定义出来呀

查看完整回答
反对 回复 2017-11-28
?
情若自控3943916

TA贡献12条经验 获得超3个赞

没关联

查看完整回答
反对 回复 2017-11-28
  • 3 回答
  • 0 关注
  • 1925 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信