extend的实现

xiaoxiao2021-02-28  117

拷贝有深浅之分。 浅拷贝比较easy

function extend2(target, ref){ var name, value; for(name in ref){ value = ref[name]; if(value !== undefined){ target[name] = value; } } return target; }

深拷贝需要对Array和plainObject

function extend(deep, target, ref){ var name, value, src, copy, clone, copyIsArray; for(name in ref){ src = target[name]; copy = ref[name]; if(target === copy){ continue; } if(deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))){ if(copyIsArray){ clone = src && isArray(src) ? src : []; }else{ clone = src && isPlainObject(src) ? src : {}; } target[name] = extend(deep,clone,copy); }else{ target[name] = copy; } } return target; }

这里类型判断参考上一篇。

转载请注明原文地址: https://www.6miu.com/read-22656.html

最新回复(0)