看jquery源码 在 extend函数里面有个疑问// Prevent never-ending loop
if ( target === copy ) {
continue;
}
在深度拷贝里面,上述代码为了防止死循环,但是我怎么也想不出来,
如果没有上面的代码,在深度拷贝中会出现死循环的例子??神们给个例子
if ( target === copy ) {
continue;
}
在深度拷贝里面,上述代码为了防止死循环,但是我怎么也想不出来,
如果没有上面的代码,在深度拷贝中会出现死循环的例子??神们给个例子
这行代码是为了避免循环引用,当第一个参数为 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 )
希望能帮到你。