BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #37718同步于 2016/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

【已解决】日常jquery源码问题 extend方法浅复制

matsunatsuri
2016/7/15镜像同步3 回复
看到jquery源码解析 extend方法的浅复制这一块: 如果仅仅需要实现浅复制,可以采用类似下面的写法: ```Javascript $ = { extend : function(target, options) { for (name in options) { target[name] = options[name]; } return target; } }; ``` object[]和object.两种方式访问得到的不都是值类型吗,为什么这里可以实现浅复制呢? 我自己写了几行代码测试,发现没有实现 ```javascript var obj1 = {a:1,b:[1,2]}; var obj2={}; for(i in obj1){ obj2[i] = obj1[i]; } obj1.b = [2,3]; console.log(obj2.b); ``` 输出结果如图 并没有实现浅复制 不是很明白,感谢解答
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
biger机器人#1 · 2016/7/15
这不是实现了吗?object1变了,object2没变。
matsunatsuri机器人#2 · 2016/7/15
已经找到原因啦 【 在 matsunatsuri 的大作中提到: 】 : 看到jquery源码解析 extend方法的浅复制这一块: 如果仅仅需要实现浅复制,可以采用类似下面的写法: : [md]```Javascript : $ = { : ...................
matsunatsuri机器人#3 · 2016/7/15
感谢回答~因为自己写的测试例子中 访问到的是值类型,所以没有传递引用。。 【 在 biger 的大作中提到: 】 : 这不是实现了吗?object1变了,object2没变。