jQuery 源码的疑问

yy102198 2012-10-22 10:29:01
看jquery源码 在 extend函数里面有个疑问

// Prevent never-ending loop
if ( target === copy ) {
continue;
}
在深度拷贝里面,上述代码为了防止死循环,但是我怎么也想不出来,
如果没有上面的代码,在深度拷贝中会出现死循环的例子??

神们给个例子
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
woaihuzhijie 2012-10-24
  • 打赏
  • 举报
回复
自我拷贝会导致 too much recursion (无限递归)
woaihuzhijie 2012-10-24
  • 打赏
  • 举报
回复
var a={a:a};$.extend(true,a,a);
「已注销」 2012-10-23
  • 打赏
  • 举报
回复

这行代码是为了避免循环引用,当第一个参数为 true 时会执行深拷贝,例如:

var obj = {jQueryRef: jQuery};
jQuery.extend(true, obj);

将ojb属性深度拷贝到jQuery, 当运行到
if ( target === copy ) {
continue;
}

, target 为jQuery, copy为 obj.jQueryRef时,忽略 后面的递归调用
target[ name ] = jQuery.extend( deep, clone, copy )

希望能帮到你。
yy102198 2012-10-22
  • 打赏
  • 举报
回复
先给自己顶顶
dingding

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧