• 扩展和深扩展


    const _ARRAY_NAME = "[object Array]"
    const _OBJECT_NAME = "[object Object]"
    
    
    //扩展
    export function extend(target) {
        var targets, arg = Array.from(arguments).slice(1,arguments.length);
        if(arg.length>0){
            targets = _extend(target,arg[0])
        }
        if(arg.length>1){
            return extend(targets,arg[1])
        }
        return targets;
    }
    
    
    //深扩展
    
    function _extend(target,source) {
        if(_isType(source) ==_ARRAY_NAME){
            for (var i=0;i<source.length;i++){
                if(_isType(source[i]) ==_ARRAY_NAME){
                    target[i]=source[i].concat(target[i]?target[i]:[])
                    _extend(target[i],source[i])
                }else if (_isType(source[i]) ==_OBJECT_NAME){
                    target[i] = target[i]?target[i]:{}
                    _extend(target[i],source[i])
                }else {
                    target[i] = source[i]
                }
            }
        }else {
            for (var v in source){
                if(_isType(source[v]) ==_ARRAY_NAME){
                    target[v]=source[v].concat(target[v]?target[v]:[])
                    _extend(target[v],source[v])
                }else if(_isType(source[v]) ==_OBJECT_NAME){
                    target[v] = target[v]?target[v]:{}
                    _extend(target[v],source[v])
                }else {
                    target[v] = source[v]
                }
            }
        }
        return target;
    }
    
    function _isType(obj) {
        return Object.prototype.toString.call(obj)
    }
    

      

  • 相关阅读:
    Redis集群(一)
    Mysql分库分表
    Redisson分布式锁
    Spring Cloud Eureka 高可用
    Spring RestTemplate具备负载均衡功能
    Redis分布式锁
    B树/B-树/B+树/B*树的数据库应用
    ABAC访问控制模型
    Maven自定义打包的包名
    Versions maven plugin 修改版本
  • 原文地址:https://www.cnblogs.com/jiebba/p/7263235.html
Copyright © 2020-2023  润新知