extend的实现

来源:互联网 发布:电子商务美工就业前景 编辑:程序博客网 时间:2024/06/04 18:58

拷贝有深浅之分。
浅拷贝比较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;        }

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