copy存在的意义

来源:2-8 仿栈与队列的操作

杰枫

2016-08-01 21:05

copy = options[name];

//覆盖拷贝

target[name] = copy;

为什么不能直接写成 target[name]=options[name]

写回答 关注

2回答

  • JSAL
    2016-08-02 01:08:57
    已采纳

    以下是我的理解,不知道对不对

    貌似是深浅拷贝的问题

    copy = options[name]其实新建了一个与 options[name]相同内容的对象,这样使用target[name]时候就不会影响到options[name]的值,是深拷贝;

    target[name]=options[name]的话则是浅拷贝,target[name]其实是options[name]的引用,target[name]改变,options[name]也会随着改变。

    慕无忌211...

    你的理解有问题,对于复杂对象类型的传值是引用传值,而不是拷贝传值。所以这里的copy变量只是引用了options[name]对象,并不是拷贝。

    2019-07-01 09:58:19

    共 2 条回复 >

  • 慕雪5194257
    2016-08-12 10:58:32

    和target[name] = options[name]没有区别,这里的copy没任何作用。

    估计老师是参考jquery源代码写的,但源代码中copy变量还做了其他操作。


    chen87...

    我同意,这里不是深拷贝,var deepCopy= function(source) { var result={}; for (var key in source) { result[key] = typeof source[key]===’object’? deepCoyp(source[key]): source[key]; } return result; } 这是一个深拷贝的写法,里面根本没有用到copy这种东西

    2017-01-11 00:04:51

    共 1 条回复 >

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84049 学习 · 280 问题

查看课程

相似问题