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

解决方案 »

  1.   


    这行代码是为了避免循环引用,当第一个参数为 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 )
    希望能帮到你。
      

  2.   

    自我拷贝会导致 too much recursion (无限递归)